Skip to main content

2-5 迴圈 (2) : while迴圈

 

while迴圈


while迴圈結構與for迴圈結構十分類似,while迴圈結構常用於不固定次數的迴圈,由迴圈中測試條件成立與否,決定是否跳出迴圈,測試條件為真時繼續迴圈,當測試條件為假時結束迴圈。例如:猜數字遊戲,兩人(A與B)玩猜數字遊戲,一人(A)心中想一個數,另一人(B)去猜,A就B所猜數字回答「猜大一點」或「猜小一點」,直到B猜到A所想數字,這樣的猜測就屬於不固定次數的迴圈,適合使用while而不適合使用for。

while指令後面所接測試條件,若為真時會不斷做迴圈內動作,直到測試條件的結果為假時跳出while迴圈。語法為:

while 執行迴圈的條件 :

       程式區塊

如果要把 for 迴圈用 while來改寫,則可以寫成:

迴圈變數=初始值

while 迴圈變數 <= 終止值:

要重覆的程式

迴圈變數=迴圈變數+遞增(減)值

範例:

i = 3
sum = 0
while  i < 13:
    sum = sum + i
    i = i + 3 
print(sum)

while迴圈內迴圈變數由起始值變化到終止值,每重複執行一次迴圈變數就會遞增(減)值,重複執行迴圈內程式,直到超過終止值後停止執行。

 

補充:

Q1.如果執行到一半,沒有滿足條件時,該怎麼跳出while迴圈?

Ans:在中間插入 break 敘述

 

請測試以下結果:

i = 1
while i < 6:
    print(i)
    if i == 3:
        break
    i += 1
    

 

2.如果迴圈中想跳過某個數字,該怎麼做?

Ans:在中間插入 continue 敘述

i = 0
while i < 6:
  i += 1 
  if i == 3:
    continue
  print(i) 

3.萬一迴圈寫錯了,陷入無窮迴圈怎麼辦?

Ans: 按下鍵盤的 [Ctrl] + [C] 就可以中斷程式

 


作業

 

練習1: 將前面的 for 迴圈之九九乘法表,用 while迴圈來改寫

 

練習2:階乘計算:

輸入正整數M,計算N為多少時,其階乘值(N!)會大於等於M。

(N階乘表示為N!,其值為「1*2*3*…*(n-1)*n」,使用while迴圈計算,N!超過M的最小N值為何?)

測試值:
M=1000

輸出:
7 階乘為 5040 大於 1000

 

練習3:猜數字遊戲

先內定一個數字(1~99),讓使用者來猜,每猜一次就會顯示「太大了」、「太小了」與「猜中了!」,當猜中數字後遊戲就結束,並顯示使用者一共猜了幾次,再根據猜的次數給予評分(例如「太厲害了」、「不錯喔」、「再加油」…)。

※進階版:將答案改為隨機產生

 

練習4:猜拳遊戲

由使用者跟電腦進行猜拳(1:剪刀、2:石頭、3:布),每猜一次電腦會亂數出拳,再判斷輸贏或平手,並紀錄下勝負場次。

當使用者輸入 0 表示不玩了,此時會顯示剛才的勝敗場次及勝率。

 


 

亂數函數 random()

使用方式:

在程式最前面加入 import random

random.randint(1,99)   #可以產生一個1~99之間的正整數