Python 重複式迴圈語法

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

在不考慮意外事件下,我們一年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)
start:起始值。
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可以將程式碼視覺化來了解程式碼的運作流程,所以筆者建立的一個簡易的迴圈範例


沒有留言: