首先說下循環(huán)的需求場景,假如你想計(jì)算1-10的所有數(shù)字的和,該怎么用程序計(jì)算?1+2+3+4+5+...+10來計(jì)算?好,可以,“+”號運(yùn)算符用的不錯,那么,我要算1-100的和呢?不要告訴我你要手敲到100?(笑哭的表情),這時,循環(huán)語句就派上極大的用場啦?。?!
那么,先對她進(jìn)行一番介紹吧(像了解女(男)朋友那樣循序漸進(jìn),表著急)~~
循環(huán)語句允許我們執(zhí)行一個語句或語句組多次,也就是說,只要你不讓程序停下來,它可以一直執(zhí)行到“天荒地老”。當(dāng)然,一般都是要有ending的,一直陷入“死循環(huán)”的程序,是有問題的。
循環(huán)的類型有3種,但主要的寫法有2種寫法,下圖中的“嵌套循環(huán)”是在while和for循環(huán)的基礎(chǔ)上進(jìn)行嵌套產(chǎn)生的,代表Python支持這種2種循環(huán)一層套一層的寫法。
1.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í)行縮進(jìn)塊的語句。
再比如我們想計(jì)算1-10的整數(shù)之和,可以用一個sum變量做累加:
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
當(dāng)然,如果覺得用數(shù)組的方式有點(diǎn)麻煩,比如要計(jì)算1-100的整數(shù)之和,從1寫到100有點(diǎn)困難,幸好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ù)序列,計(jì)算如下:
sum = 0
for x in range(101):
sum = sum + x
print(sum)
2.while循環(huán)
只要條件滿足,就不斷循環(huán),條件不滿足時退出循環(huán)。比如我們要計(jì)算100以內(nèi)所有奇數(shù)之和,可以用while循環(huán)實(shí)現(xiàn):
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
在循環(huán)內(nèi)部變量n不斷自減,直到變?yōu)?1時,不再滿足while條件,循環(huán)退出。
至于第三種嵌套循環(huán)的用法,下面舉個栗子:(這里加入了條件判斷語句,與上一篇文章所學(xué)融會貫通)
以下實(shí)例使用了嵌套循環(huán)輸出2~50之間的素?cái)?shù):
i = 2
while(i < 50):
j = 2
while(j <= (i/j)):
if not(i%j): break
j = j + 1
if (j > i/j) : print i, " 是素?cái)?shù)"
i = i + 1
print "Good bye!"
以上實(shí)例輸出結(jié)果:
2 是素?cái)?shù)
3 是素?cái)?shù)
5 是素?cái)?shù)
7 是素?cái)?shù)
11 是素?cái)?shù)
13 是素?cái)?shù)
17 是素?cái)?shù)
19 是素?cái)?shù)
23 是素?cái)?shù)
29 是素?cái)?shù)
31 是素?cái)?shù)
37 是素?cái)?shù)
41 是素?cái)?shù)
43 是素?cái)?shù)
47 是素?cái)?shù)
顯然上面的程序里有2個while循環(huán),假如有2個for循環(huán)也是可以作為嵌套循環(huán)的。
那么,假如循環(huán)程序在執(zhí)行到特定的值時要進(jìn)行特定的操作該怎么辦呢?比如,我想在1-100求和時,當(dāng)值為10時結(jié)束循環(huán),或者打印出特定的提示信息,又或者直接跳過10不加了,這就需要用到循環(huán)的控制語句了,且看下圖:
1.break
如果要提前結(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')
本來要循環(huán)打印1~100的數(shù)字:
執(zhí)行上面的代碼可以看到,打印出1~10后,緊接著打印END,程序結(jié)束。
2.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)。
3.pass
pass是空語句,是為了保持程序結(jié)構(gòu)的完整性。
pass 不做任何事情,一般用做占位語句。舉個栗子啦~
for letter in 'Python':
if letter == 'h':
pass
print '這是 pass 塊'
print '當(dāng)前字母 :', letter
執(zhí)行結(jié)果為:
當(dāng)前字母 : P
當(dāng)前字母 : y
當(dāng)前字母 : t
這是 pass 塊
當(dāng)前字母 : h
當(dāng)前字母 : o
當(dāng)前字母 : n
老鐵們,大佬們,今天就給大家介紹到這里啦~~有興趣的可以加關(guān)注或點(diǎn)贊轉(zhuǎn)發(fā)給朋友喲~【愛他(她)就讓他(她)去搬磚吧】
敬請期待~~你我一同進(jìn)步?。?!有任何問題皆可留言詢問~~謝各位大佬關(guān)注?。?/p>