在不考慮意外事件下,我們一年365天,每天都會吃三餐:早餐、午餐、晚餐。若Python要寫個模擬每天用餐的程式要怎麼寫呢?可能會有下面的寫法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | print('第1天吃早餐、中餐、晚餐') print('第2天吃早餐、中餐、晚餐') print('第3天吃早餐、中餐、晚餐') print('第4天吃早餐、中餐、晚餐') print('第5天吃早餐、中餐、晚餐') print('第6天吃早餐、中餐、晚餐') print('第7天吃早餐、中餐、晚餐') ... ... ... print('第359天吃早餐、中餐、晚餐') print('第360天吃早餐、中餐、晚餐') print('第361天吃早餐、中餐、晚餐') print('第362天吃早餐、中餐、晚餐') print('第363天吃早餐、中餐、晚餐') print('第364天吃早餐、中餐、晚餐') print('第365天吃早餐、中餐、晚餐') |
哇!哇!哇!我們寫出上百行的程式碼囉!但是好像複製(Copy)與貼上(Paste)居多,CP值超高的程式師誕生了。恭喜,恭喜,恭喜。
一年過去了,在某天的下午,這位CP值超高的程式師翻起「蟒蛇Python養成日記」一書,看到書中的一個程式範例:
1 2 | for day in range(1, 366): print('第' + str(day) + '天吃早餐、中餐、晚餐') |
!!!程式師大驚!!!
???心想這是什麼寫法與觀念啊???
為什麼程式跑出來的結果和我一年前寫的一模一樣啊?!
於是程式師再度踏上學習之路,要好好學習這神奇的魔法:「重複式迴圈」。為了讓自己的學習更有心得,程式師所開始寫下筆記。首先了解range的用法:
1 | range(start, stop, step)
|
stop:結束值。
step:遞增值。
例如底下例子會輸出 1, 3, 5, 7, 9, :
1 2 3 4 | # 輸出 1 至 11 之間的奇數 # 不包含 11 for n in range(1, 11, 2): print(n, end=', ') |
那要輸出 2, 4, 6, 8, 10, 的結果,該怎麼做呢?一個參考做法如下:
1 2 3 | # 輸出 1 至 11 之間的偶數 for n in range(2, 11, 2): print(n, end=', ') |
for迴圈(for Loop)
語法如下:
1 2 3 4 5 | for 變數 in 序列: 程式碼第1行 程式碼第2行 ...etc 程式碼第n行 |
for loop範例:
1 2 3 4 5 6 7 8 9 10 | import string # 列出小寫英文字母 for lowCase in string.ascii_lowercase: print(lowCase, end=',') print() # 列出大寫英文字母 for upCase in string.ascii_uppercase: print(upCase, end=',') |
while迴圈(while Loop)
語法如下:
1 2 3 4 5 | while 判斷敘述:
程式碼第1行
程式碼第2行
...etc
程式碼第n行
|
while loop範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import string # 列出小寫英文字母 idx = 0 while idx < len(string.ascii_lowercase): print(string.ascii_lowercase[idx], end=',') idx = idx + 1 print() # 列出大寫英文字母 idx = 0 while idx < len(string.ascii_uppercase): print(string.ascii_uppercase[idx], end=',') idx = idx + 1 |
巢狀迴圈(nested Loop)
語法如下:
1 2 3 4 5 6 | for 變數 in 序列: for 變數 in 序列: 程式碼第1行 程式碼第2行 ...etc 程式碼第n行 |
或
1 2 3 4 5 6 | while 判斷敘述: while 判斷敘述: 程式碼第1行 程式碼第2行 ...etc 程式碼第n行 |
nested loop範例:
1 2 3 4 5 6 7 | # 九九乘法表 for i in range(1,10): for j in range(1,10): r = i * j print ('%d * %d = %d' %(i, j , r), end="\t") print('') |
或
1 2 3 4 5 6 7 8 9 10 11 | # 九九乘法表 i = 1 while i < 10: j = 1 while j < 10: r = i * j print ('%d * %d = %d' %(i, j , r), end="\t") j = j + 1 i = i + 1 print() |
本部落的文章Python Tutor 線上Coding工具介紹一文說明了Python Tutor可以將程式碼視覺化來了解程式碼的運作流程,所以筆者建立的一個簡易的迴圈範例。
沒有留言:
張貼留言