012 循环
循環(huán)
要計算1+2+3,我們可以直接寫表達式:
>>> 1 + 2 + 3 6要計算1+2+3+...+10,勉強也能寫出來。
但是,要計算1+2+3+...+10000,直接寫表達式就不可能了。
為了讓計算機能計算成千上萬次的重復運算,我們就需要循環(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ù)可以轉換為list。比如range(5)生成的序列是從0開始小于5的整數(shù):
>>> list(range(5)) [0, 1, 2, 3, 4]range(101)就可以生成0-100的整數(shù)序列,計算如下:
# -*- coding: utf-8 -*- sum = 0 for x in range(101):sum = sum + x print(sum)請自行運行上述代碼,看看結果是不是當年高斯同學心算出的5050。
第二種循環(huán)是while循環(huán),只要條件滿足,就不斷循環(huán),條件不滿足時退出循環(huán)。比如我們要計算100以內所有奇數(shù)之和,可以用while循環(huán)實現(xiàn):
sum = 0 n = 99 while n > 0:sum = sum + nn = n - 2 print(sum)在循環(huán)內部變量n不斷自減,直到變?yōu)?1時,不再滿足while條件,循環(huán)退出。
練習
請利用循環(huán)依次對list中的每個名字打印出Hello, xxx!:
# -*- coding: utf-8 -*- 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。
如果要提前結束循環(huán),可以用break語句:
n = 1 while n <= 100:if n > 10: # 當n = 11時,條件滿足,執(zhí)行break語句break # break語句會結束當前循環(huán)print(n)n = n + 1 print('END')執(zhí)行上面的代碼可以看到,打印出1~10后,緊接著打印END,程序結束。
可見break的作用是提前結束循環(huán)。
continue
在循環(huán)過程中,也可以通過continue語句,跳過當前的這次循環(huán),直接開始下一次循環(huán)。
n = 0 while n < 10:n = n + 1print(n)上面的程序可以打印出1~10。但是,如果我們想只打印奇數(shù),可以用continue語句跳過某些循環(huán):
n = 0 while n < 10:n = n + 1if 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的作用是提前結束本輪循環(huán),并直接開始下一輪循環(huán)。
小結
循環(huán)是讓計算機做重復任務的有效的方法。
break語句可以在循環(huán)過程中直接退出循環(huán),而continue語句可以提前結束本輪循環(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退出程序,或者強制結束Python進程。
請試寫一個死循環(huán)程序。
參考源碼
do_for.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*-# 打印list: names = ['Michael', 'Bob', 'Tracy'] for name in names:print(name)# 打印數(shù)字 0 - 9 for x in range(10):print(x)do_while.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*-# 計算1+2+3+...+100: sum = 0 n = 1 while n <= 100:sum = sum + nn = n + 1 print(sum)# 計算1x2x3x...x100: acc = 1 n = 1 while n <= 100:acc = acc * nn = n + 1 print(acc)?
轉載于:https://www.cnblogs.com/AgainstTheWind/p/9858827.html
總結
- 上一篇: 各大编程字体比较
- 下一篇: ObjectInputStream和Ob