2015-11-04 146 views
0
i=0 
>>> while i<3: 
...  print i 
...  i += 1 
... else: 
...  print ‘Done with i =’, i 
... 
0 
1 
2 
Done with i = 3 

大家好,我很奇怪,爲什麼while循環完成當i = 3,而不是當i = 2。當i = 2時,i = i + 1 = 2 + 1 = 3,表達式變爲False,然後執行結束。這不正確嗎?在while循環的停止點蟒蛇

+1

咦?就像你說的,當我是2時,它會檢查,打印2,然後將我遞增到3,然後再次檢查,這次檢查將是錯誤的,因此它將退出while循環, t會突然出現,其他的會在我設置爲3時觸發。 – Foon

+0

我的想法是new_i = old_i + 1,當old_i是2時,new_i變成3並且循環結束,所以我應該是2(舊的)。 –

回答

3

while ... else塊中的else總是執行。所以你的while循環以i == 2結尾,但是你用i += 1增加,所以i == 3。然後你的while循環退出,並執行else塊。

0

else塊將始終執行。這與簡單地寫print "Done with i =", i是一樣的。正如BlivetWidget所說的,您正在將1添加到i,然後執行else塊。相反,你可以使用print "Done with i = ", i-1