W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
接下來(lái)是一個(gè)更在你意料之外的概念:while循環(huán)(while-loop)
。while循環(huán)會(huì)一直執(zhí)行它下面的代碼片段,直到它對(duì)應(yīng)的布爾表達(dá)式為False
時(shí)才會(huì)停下來(lái)。
你還能跟得上這些術(shù)語(yǔ)吧?如果你的某一行是以:
(冒號(hào))結(jié)尾,那就意味著接下來(lái)的內(nèi)容是一個(gè)新的代碼片段,新的代碼片段是需要縮進(jìn)的。只有將代碼用這樣的方式格式化,Python才能知道你的目的。如果你不太明白這一點(diǎn),就回去看看“if 語(yǔ)句”和“函數(shù)”的章節(jié),直到你明白為止。
接下來(lái)的練習(xí)將訓(xùn)練你的大腦去閱讀這些結(jié)構(gòu)化的代碼。這和我們將布爾表達(dá)式燒錄到你的大腦中的過(guò)程有點(diǎn)類似。
回到while
循環(huán),它所作的和if
語(yǔ)句類似,也是去檢查一個(gè)布爾表達(dá)式的真假,不一樣的是它下面的代碼片段不是只被執(zhí)行一次,而是執(zhí)行完后再調(diào)回到 while
所在的位置,如此重復(fù)進(jìn)行,直到while
表達(dá)式為False
為止。
While
循環(huán)有一個(gè)問(wèn)題,那就是有時(shí)它永遠(yuǎn)不會(huì)結(jié)束。如果你的目的是循環(huán)到宇宙毀滅為止,那這樣也挺好的,不過(guò)其他的情況下你的循環(huán)總需要有一個(gè)結(jié)束。
為了避免這樣的問(wèn)題,你需要遵循下面的規(guī)定:
- 盡量少用
while-loop
,大部分時(shí)候for-loop
是更好的選擇。- 重復(fù)檢查你的
while
語(yǔ)句,確定你的布爾表達(dá)式最終會(huì)變成False
。- 如果不確定,就在while循環(huán)的結(jié)尾打印出你測(cè)試的值??纯此淖兓?。
在這節(jié)練習(xí)中,你將通過(guò)上面的三個(gè)檢查學(xué)會(huì)while-loop
:
i = 0
numbers = []
while i < 6:
print "At the top i is %d" % i
numbers.append(i)
i = i + 1
print "Numbers now: ", numbers
print "At the bottom i is %d" % i
print "The numbers: "
for num in numbers:
print num
$ python ex33.py
At the top i is 0
Numbers now: [0]
At the bottom i is 1
At the top i is 1
Numbers now: [0, 1]
At the bottom i is 2
At the top i is 2
Numbers now: [0, 1, 2]
At the bottom i is 3
At the top i is 3
Numbers now: [0, 1, 2, 3]
At the bottom i is 4
At the top i is 4
Numbers now: [0, 1, 2, 3, 4]
At the bottom i is 5
At the top i is 5
Numbers now: [0, 1, 2, 3, 4, 5]
At the bottom i is 6
The numbers:
0
1
2
3
4
5
- 將這個(gè)
while
循環(huán)改成一個(gè)函數(shù),將測(cè)試條件(i < 6)
中的 6 換成一個(gè)變量。- 使用這個(gè)函數(shù)重寫(xiě)你的腳本,并用不同的數(shù)字進(jìn)行測(cè)試。
- 為函數(shù)添加另外一個(gè)參數(shù),這個(gè)參數(shù)用來(lái)定義第 8 行的加值
+1
,這樣你就可以讓它加任意值了。- 再使用該函數(shù)重寫(xiě)一遍這個(gè)腳本??纯葱Ч绾巍?/li>
- 使用
for-loop
和range
把這個(gè)腳本再寫(xiě)一遍。你還需要中間的加值操作嗎?如果不去掉它,會(huì)有什么樣的結(jié)果?
很有可能你會(huì)碰到程序跑著停不下來(lái)了,這時(shí)你只要按著 CTRL 再敲 c (CTRL-c),這樣程序就會(huì)中斷下來(lái)了。
for 循環(huán)只能對(duì)某種事物的集合做循環(huán),而while可以進(jìn)行任何種類的循環(huán)。但是,while循環(huán)很容易出錯(cuò),大部分情況for循環(huán)也是一個(gè)很好的選擇。
人們不理解循環(huán)的主要原因是因?yàn)樗麄儾焕斫獯a的“跳躍性”。當(dāng)一個(gè)循環(huán)運(yùn)行的時(shí)候,它會(huì)執(zhí)行完循環(huán)的代碼塊,然后從代碼塊的末尾跳到開(kāi)頭。想象一下,在循環(huán)中放一些打印語(yǔ)句,當(dāng)Python運(yùn)行的時(shí)候,看一下變量在這些位置是如何變化的。把打印語(yǔ)句寫(xiě)在循環(huán)之前,循環(huán)的開(kāi)頭,循環(huán)的中間,以及循環(huán)結(jié)束的位置,研究一下這些輸出,再試著理解一下代碼是如何跳躍的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: