Python基礎——for/while迴圈,pythonwhile
Python版本:3.6.2 作業系統:Windows 作者:SmallWZQ
上學期間,常常遇到這樣的情景:為了懲罰學生,老師會說:“XXX,你先去操場上跑10圈再回來繼續反省。”
這話雖短,但含義深刻。不過這在當時,我是體會不到其中的“深意”的。直至大學,當接觸到C++編程時,我才領悟到這其中的內涵。原來這句話中飽含編程哲學啊。什麼哲學呢?圍著操場跑道,重複跑10圈……這不就是“迴圈”?
言歸正傳,for/while迴圈有什麼作用呢?前面講的Python基礎知識中的代碼就不需要迴圈啊。那下面來看一種情形唄~~~
情形一:求和。求1+2+3的和,並輸出結果。
1 #哈哈,我就不用迴圈,看你咋的2 >>>sum = 1 + 2 + 33 >>>print(sum)4 6
情形二:再是求和。求1+2+3+4+5+6+7+8+9+10的和,並輸出結果。
1 #哈哈,我還不用迴圈,看你咋的2 >>>sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 103 >>>print(sum)4 55
情形三:還是求和。求1+2+3+……+99+100的和,並輸出結果。
1 #哈哈,我就不用迴圈,看你咋的 2 #我可以這樣啊 3 >>>sum = 1 + 2 + 3 + ...... + 99 + 100 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: unsupported operand type(s) for +: 'int' and 'ellipsis' 7 #迴圈的魅力就在於此 8 >>>sum = 0 9 >>>for i in range(101):10 sum = sum + i11 >>>print(sum)12 5050
看來,迴圈不用不行啊。
range():產生一個整數序列。比如range(3)產生的序列是從0到2的整數:
1 #range()方法2 >>>list(range(3))3 [0,1,2]4 >>>list(range(1,6))5 [1,2,3,4,5]
while迴圈
學習Python,使用笨方法可不行哦~~~
就像上面的情形二,直接寫求和運算式。
為了避免上述情形二中笨重的代碼,可以使用while迴圈:
1 #while迴圈2 >>>sum = 03 >>>i = 04 >>>while i < 11:5 ... sum = sum + i6 ... i = i +17 ...8 >>>print(sum)9 55
在while迴圈內部,i不斷加一,直到i變為11時,不再滿足(i<11)while條件,迴圈退出。
while迴圈可以用來在任何條件為True的情況下重複執行一個代碼塊。
因此,while迴圈:只要條件滿足,就不斷迴圈,條件不滿足時退出迴圈。
for迴圈
一般地,while迴圈已經可以應付大多數的迴圈案例。然而,還是有while迴圈夠不著的地方。這時就需要for...in大顯身手啦。
比如要為一個集合的每個元素都執行一個代碼塊:
1 #集合2 >>>L = ['I','can','Python','!']3 >>>for i in L:4 ... print(i)5 ...6 I7 can8 Python9 !
對於求和公式,for...in迴圈比while迴圈更加簡潔:
1 #for...in迴圈比while迴圈簡潔 2 #求和公式 3 #for...in迴圈 4 >>>sum = 0 5 >>>for i in range(11): 6 ... sum = sum + i 7 ... 8 >>>print(sum) 9 5510 #while迴圈11 >>>sum = 012 >>>i = 013 >>>while i < 11:14 ... sum = sum + i15 ... i = i + 116 ...17 >>>print(sum)18 55
註:若可以使用for...in迴圈,就盡量不用while迴圈。
對於迴圈中的break語句和continue語句,我不推薦大家使用。為什麼呢?其一是容易出錯;其二是可以通過改寫迴圈條件或者修改迴圈邏輯來替代break語句和continue語句。
死迴圈之吻
對於死迴圈,我相信大家都印象深刻。有些時候,如果代碼寫得有問題,會讓程式陷入“死迴圈”,也就是永遠迴圈下去。
如何解決死迴圈問題呢?方法如下:
一、Ctrl + C直接退出程式或強制結束Python進程。
對於出現編寫Python程式碼時出現意想不到的問題而引起的死迴圈的情況,這種方法非常有效。
空代碼塊
在Python中,空代碼塊是非法的。
解決方案如下:
二、pass語句:什麼都不做。
為了避免出現空代碼塊Error,方法就是在迴圈代碼塊中加入一個pass語句。
1 #pass語句 2 >>>for i in range(11): 3 ... 4 ... 5 File "<stdin>", line 3 6 7 ^ 8 IndentationError: expected an indented block 9 #空代碼塊錯誤10 >>>for i in range(11):11 ... pass12 ...13 >>>
小結
1. 為序列中的每一個元素執行一個語句塊,或者在條件為真時繼續執行一段語句;
2. 可以使用continue語句和break語句,但不推薦使用;
3. 死迴圈問題,Ctrl + C直接退出程式;
4. 迴圈:讓電腦做重複任務的有效方法。