迴圈可以重複不停地做某些動作直到某個條件成立時,動作才會停止,總之就是個能重複進行運算的結構,以下為For迴圈的語法:
for 自訂變數 in range(起始值, 結束值, 遞增值)
#處理自訂變數的資料
...
if 關係運算式:
continue #進入range數列的下一行
...
if 關係運算式:
break #離開迴圈
...
這邊利用if判斷式去做結合主要是想同時介紹continue跟break指令的用法,我們來一一做說明:
total = 0
for i in range(1,11,1):
total += i
print(total)
rangr(1,11,1)會產生一個1到10的整數數列,然後數列每一項都會依序存入自訂變數i。每存一次,就會執行迴圈中的程式碼一次,也就是把數列累加進total裡,所以最後執行結果total是1到10的數字總和55拉~
那如果想改成計算偶數總和,就可以加入上方所提到的判斷跟指令,如下:
total = 0
for i in range(1,11,1):
if i % 2 != 0:
continue #如果是奇數,會直接進行下一次迴圈
total += i
print(total)
如此就得出偶數和30囉~
當然並不是所有狀況都能用for迴圈去處理,假如想要程式一直重複去做某件事情,直到某個條件成立為止,而不是用次數去限制它,那麼就可以用條件迴圈(while)
while 關係運算式:
#迴圈程式碼
...
if 關係運算式:
continue #進入range數列的下一行
...
if 關係運算式:
break #離開迴圈
...
上方可看出與for迴圈差異並不大,唯一差別在於第一行的條件而已。while迴圈是利用關係運算式來控制迴圈是否執行,如果關係運算式執行結果是True,才會執行迴圈中的程式碼,反之False的話,則會離開迴圈。同樣while迴圈也可以用continue跟break指令來改變迴圈執行的流程,那麼先來看個範例:
total = 0
i = 1
while i <= 10:
total += i
i += 1 #改變變數值
print(total)
我故意拿了與for迴圈例子有相同執行結果的例子去做比較,兩個同樣是在算1到10的總和,不過while迴圈是檢查變數i是否為10以下,若不是則會跳出迴圈。可是用while迴圈去計算1到10的總和,還要增加一條i += 1
去改變變數值,不如使用for迴圈來的簡潔,所以以下舉個適合while迴圈的範例:
score = int(input('請輸入成績:'))
while score < 0 or score > 100:
score = int(input('成績錯誤,請重新輸入:'))
這樣就能避免學生亂打成績,只限定成績在0到100之間,只要符合條件才能繼續下去,否則就要被困在無線迴圈裡了XD
明天來看看巢狀迴圈跟一些練習題吧