目錄
簡介
break
continue
小結
簡介
要計算1+2+3,我們可以直接寫表達式:
>>> 1 + 2 + 3
6
要計算1+2+3+...+10,勉強也能寫出來。
但是,要計算1+2+3+...+10000,直接寫表達式就不可能了。
為了讓計算機能計算成千上萬次的重復運算,我們就需要循環語句。
Python的循環有兩種,一種是for...in循環,依次把list或tuple中的每個元素迭代出來,看例子:
names = ['Michael', 'Bob', 'Tracy']
for name in names:print(name)
執行這段代碼,會依次打印names
的每一個元素:
Michael
Bob
Tracy
所以for x in ...
循環就是把每個元素代入變量x
,然后執行縮進塊的語句。
再比如我們想計算1-10的整數之和,可以用一個sum
變量做累加:
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:sum = sum + x
print(sum)
如果要計算1-100的整數之和,從1寫到100有點困難,幸好Python提供一個range()
函數,可以生成一個整數序列,再通過list()
函數可以轉換為list。比如range(5)
生成的序列是從0開始小于5的整數:
>>> list(range(5))
[0, 1, 2, 3, 4]
range(101)
就可以生成0-100的整數序列,計算如下:
sum = 0
for x in range(101):sum = sum + x
print(sum)
請自行運行上述代碼,看看結果是不是當年高斯同學心算出的5050。
第二種循環是while循環,只要條件滿足,就不斷循環,條件不滿足時退出循環。比如我們要計算100以內所有奇數之和,可以用while循環實現:
sum = 0
n = 99
while n > 0:sum = sum + nn = n - 2
print(sum)
在循環內部變量n
不斷自減,直到變為-1
時,不再滿足while條件,循環退出。
break
在循環中,break
語句可以提前退出循環。例如,本來要循環打印1~100的數字:
n = 1
while n <= 100:print(n)n = n + 1
print('END')
上面的代碼可以打印出1~100。
如果要提前結束循環,可以用break
語句:
n = 1
while n <= 100:if n > 10: # 當n = 11時,條件滿足,執行break語句break # break語句會結束當前循環print(n)n = n + 1
print('END')
執行上面的代碼可以看到,打印出1~10后,緊接著打印END
,程序結束。
可見break
的作用是提前結束循環。
continue
在循環過程中,也可以通過continue
語句,跳過當前的這次循環,直接開始下一次循環。
n = 0
while n < 10:n = n + 1print(n)
上面的程序可以打印出1~10。但是,如果我們想只打印奇數,可以用continue
語句跳過某些循環:
n = 0
while n < 10:n = n + 1if n % 2 == 0: # 如果n是偶數,執行continue語句continue # continue語句會直接繼續下一輪循環,后續的print()語句不會執行print(n)
執行上面的代碼可以看到,打印的不再是1~10,而是1,3,5,7,9。
可見continue
的作用是提前結束本輪循環,并直接開始下一輪循環。
小結
循環是讓計算機做重復任務的有效的方法。
break
語句可以在循環過程中直接退出循環,而continue
語句可以提前結束本輪循環,并直接開始下一輪循環。這兩個語句通常都必須配合if
語句使用。
要特別注意,不要濫用break
和continue
語句。break
和continue
會造成代碼執行邏輯分叉過多,容易出錯。大多數循環并不需要用到break
和continue
語句,上面的兩個例子,都可以通過改寫循環條件或者修改循環邏輯,去掉break
和continue
語句。
有些時候,如果代碼寫得有問題,會讓程序陷入“死循環”,也就是永遠循環下去。這時可以用Ctrl+C
退出程序,或者強制結束Python進程。
請試寫一個死循環程序。