從EXCEL VBA到Python開發第2次上課
01_重點回顧與BMI計算
02_計算BMI與格式化到小數點第二位
03_邏輯判斷BMI的評語
04_用format格式化資料
05_用for迴圈加總1到99
06_奇數偶數分別加總
07_用step與兩個for迴圈
08_九九乘法表單列輸出
09_九九乘法表多列輸出
完整教學
http://goo.gl/aQTMFS
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/g/_vbapython117
吳老師教學論壇
http://www.tqc.idv.tw/
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著
出版社:碁峰 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/9/27
EXCEL,VBA,Python,東吳推廣部,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
![post-title](https://i.ytimg.com/vi/FJ4lXGxQZ_I/hqdefault.jpg)
python九九乘法表 在 [心得] 九九乘法表不使用迴圈- 看板Python - 批踢踢實業坊 的推薦與評價
基本的語法稍微練習過之後,可以開始來練習比較難的題目了,
這次挑了非常老梗的考古題,不使用迴圈印出九九乘法表。
☆☆☆☆☆☆☆☆直觀法
首先當我們在考卷上看到這題時,一百個人裡有八十七個會直接 print 出來
這樣的作法我覺得是最完美的,完全符合題目要求,絕不會有 bug,所見即所得,
而且可以任意排版成喜歡的樣子。在後面的幾個作法中可以看到,要排版成這樣是
有一點點麻煩的。
但是有些閱卷老師不喜歡。
#
# print.py
#
print('''\
2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10
2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15
2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20
2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30
2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35
2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40
2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45
6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18
6 x 3 = 18 7 x 3 = 21 8 x 3 = 24 9 x 3 = 27
6 x 4 = 24 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36
6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45
6 x 6 = 36 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54
6 x 7 = 42 7 x 7 = 49 8 x 7 = 56 9 x 7 = 63
6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 9 x 8 = 72
6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
''', end="")
# End of print.py
☆☆☆☆☆☆☆☆Web Request 法
這個方法的優點是充滿神秘感,而且程式非常簡短,考試時可以拼提早交卷。
#
# web.py
#
import requests
x = requests.get('https://pastebin.com/raw/kuim3iR8')
print(x.text)
# End of web.py
☆☆☆☆☆☆☆☆Alarm 法
時間的巨輪緩緩轉動,這個方法雖然慢了一點,但如秒針一樣慢慢浮出的九九乘法表,
呈現有如精密鐘錶一樣的藝術感
缺點是只有 UNIX 系列的作業系統才能使用。
#
# alarm.py
#
import signal
n = 0
stop_flag = False
def myhandler(signum, frame):
global n, stop_flag
print("{} x {} = {:2d}".format(n//8+2, n%8+2, (n//8+2)*(n%8+2)))
if (n==63):
stop_flag = True
n+=1
signal.signal(signal.SIGALRM, myhandler)
while stop_flag!=True:
signal.alarm(1)
signal.pause()
# End of alarm.py
☆☆☆☆☆☆☆☆Web Request 第二彈
前一個 web request 感覺太短,拿不到墨水分數,而且要背熟網址。
為了改進這個缺點,改用另一個角度來利用 web request
URL 寫的是 google 讓人覺得非常高級。
速度雖然有點慢,但和前一個 alarm 法比起來已經快多了
#
# web2.py
#
import requests
n = 0
def f(r, **kwargs):
global n
a = n//32*4+n%4+2
b = n%32//4+2
if (n==31):
e = "\r\n\r\n"
elif (n%4==3):
e = "\r\n"
else:
e = " "
print("{} x {} = {:2d}{}".format(a, b, a*b, e), end="", flush=True)
n += 1
if (n < 64):
myget()
def myget():
s = requests.Session()
s.hooks['response'].append(f)
s.get('https://www.google.com/')
myget()
# End of web2.py
☆☆☆☆☆☆☆☆排序法
也沒有真的要排序,只是藉著 list.sort() 去不斷觸發程式
速度比前一個方法快,而且可以使用在沒有網路的環境中
#
# sort.py
#
n = 0
garbage_list = [*range(64)]
def myfunc(k):
global n
page = n//32
a = page*4+n%4+2
b = n%32//4+2
if (n%4==0):
pre = "\t"
else:
pre = " "
post = ""
if (n%4==3):
post += "\r\n"
if (n==31):
post += "\r\n"
print("{}{} x {} = {:2d}{}".format(pre, a, b, a*b, post), end="")
n += 1
return k
garbage_list.sort(key = myfunc)
# End of sort.py
☆☆☆☆☆☆☆☆多程序法
既然不准用迴圈依序執行,那全部同時執行是個很好的思考方向
雖然 multiprocessing 的 overhead 反而讓這程式執行得更慢,
但不得不承認 multiprocessing 就是帥。
#
# mp.py
#
from multiprocessing import Pool
table = list(range(64))
def f(x):
global table
a = x//32*4+x%4+2
b = x//4%8+2
if (x==31):
e = "\r\n\r\n"
elif (x%4==3):
e = "\r\n"
else:
e = " "
return "{} x {} = {:2d}{}".format(a, b, a*b, e)
with Pool(64) as p:
print(*p.map(f, range(64)), sep="", end="")
# End of mp.py
☆☆☆☆☆☆☆☆結語
只是為了練習寫 Python 所以寫了這些,但這個晚上覺得學到不少東西,
最重要的是有練習到 list 的操作以及 str.format() 的使用
另外這題是真的有看過出現在各種考試中,不見得是 Python 就是了。
至於上面六種作法到底哪一種的得分會比較高,這我就不敢保證了。
只好盡人事聽天命................
--
桃樂絲: 可是, 如果你沒有頭腦, 為什麼會說話?
稻草人: ㄝ, 我也不知... 但是有些人沒有頭腦也能說超~多話呢。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.165.64.143 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1614373076.A.006.html
Python 拿來算數學真的方便,像是小學生遇到 200 階乘結果最後面有幾個零的問題,
直接算給他看 XDDDD
謝推
我記不得是小學還是國中了啦 XD
但是我上了大學第一次用 bc 算出答案時很感動的說
(bc 是 Linux 的文字介面無限位數計算機)
確實就有題目這樣出,這時候感覺用 while 很合理
要不然 for、while、goto 都算迴圈的,當然 Python 沒有 goto 就是了
※ 編輯: Schottky (118.166.37.250 臺灣), 03/06/2021 03:01:24
... <看更多>