循環(huán)
要計算1+2+3,我們可以直接寫表達式:
>>> 1 + 2 + 3
6
要計算1+2+3+...+10澳眷,勉強也能寫出來。
但是蛉艾,要計算1+2+3+...+10000钳踊,直接寫表達式就不可能了。
為了讓計算機能計算成千上萬次的重復(fù)運算勿侯,我們就需要循環(huán)語句拓瞪。
Python的循環(huán)有兩種,一種是for...in循環(huán)助琐,依次把list或tuple中的每個元素迭代出來祭埂,看例子:
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
執(zhí)行這段代碼,會依次打印names
的每一個元素:
Michael
Bob
Tracy
所以for x in ...
循環(huán)就是把每個元素代入變量x
兵钮,然后執(zhí)行縮進塊的語句蛆橡。
再比如我們想計算1-10的整數(shù)之和,可以用一個sum
變量做累加:
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
如果要計算1-100的整數(shù)之和掘譬,從1寫到100有點困難泰演,幸好Python提供一個range()
函數(shù),可以生成一個整數(shù)序列葱轩,再通過list()
函數(shù)可以轉(zhuǎn)換為list睦焕。比如range(5)
生成的序列是從0開始小于5的整數(shù):
>>> list(range(5))
[0, 1, 2, 3, 4]
range(101)
就可以生成0-100的整數(shù)序列,計算如下:
sum = 0
for x in range(101):
sum = sum + x
print(sum)
請自行運行上述代碼酿箭,看看結(jié)果是不是當(dāng)年高斯同學(xué)心算出的5050复亏。
第二種循環(huán)是while循環(huán)趾娃,只要條件滿足缭嫡,就不斷循環(huán),條件不滿足時退出循環(huán)抬闷。比如我們要計算100以內(nèi)所有奇數(shù)之和妇蛀,可以用while循環(huán)實現(xiàn):
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
在循環(huán)內(nèi)部變量n
不斷自減,直到變?yōu)?code>-1時笤成,不再滿足while條件评架,循環(huán)退出。
練習(xí)
請利用循環(huán)依次對list中的每個名字打印出Hello, xxx!
:
L = ['Bart', 'Lisa', 'Adam']
break
在循環(huán)中炕泳,break
語句可以提前退出循環(huán)纵诞。例如,本來要循環(huán)打印1~100的數(shù)字:
n = 1
while n <= 100:
print(n)
n = n + 1
print('END')
上面的代碼可以打印出1~100培遵。
如果要提前結(jié)束循環(huán)浙芙,可以用break
語句:
n = 1
while n <= 100:
if n > 10: # 當(dāng)n = 11時登刺,條件滿足,執(zhí)行break語句
break # break語句會結(jié)束當(dāng)前循環(huán)
print(n)
n = n + 1
print('END')
執(zhí)行上面的代碼可以看到嗡呼,打印出1~10后纸俭,緊接著打印END
,程序結(jié)束南窗。
可見break
的作用是提前結(jié)束循環(huán)揍很。
continue
在循環(huán)過程中,也可以通過continue
語句万伤,跳過當(dāng)前的這次循環(huán)窒悔,直接開始下一次循環(huán)。
n = 0
while n < 10:
n = n + 1
print(n)
上面的程序可以打印出1~10敌买。但是蛉迹,如果我們想只打印奇數(shù),可以用continue
語句跳過某些循環(huán):
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶數(shù)放妈,執(zhí)行continue語句
continue # continue語句會直接繼續(xù)下一輪循環(huán)北救,后續(xù)的print()語句不會執(zhí)行
print(n)
執(zhí)行上面的代碼可以看到,打印的不再是1~10芜抒,而是1珍策,3,5宅倒,7攘宙,9。
可見continue
的作用是提前結(jié)束本輪循環(huán)拐迁,并直接開始下一輪循環(huán)蹭劈。
小結(jié)
循環(huán)是讓計算機做重復(fù)任務(wù)的有效的方法。
break
語句可以在循環(huán)過程中直接退出循環(huán)线召,而continue
語句可以提前結(jié)束本輪循環(huán)铺韧,并直接開始下一輪循環(huán)。這兩個語句通常都必須配合if
語句使用缓淹。
要特別注意哈打,不要濫用break
和continue
語句。break
和continue
會造成代碼執(zhí)行邏輯分叉過多讯壶,容易出錯料仗。大多數(shù)循環(huán)并不需要用到break
和continue
語句,上面的兩個例子伏蚊,都可以通過改寫循環(huán)條件或者修改循環(huán)邏輯立轧,去掉break
和continue
語句。
有些時候,如果代碼寫得有問題氛改,會讓程序陷入“死循環(huán)”匀借,也就是永遠循環(huán)下去。這時可以用Ctrl+C
退出程序平窘,或者強制結(jié)束Python進程吓肋。
請試寫一個死循環(huán)程序。