#!/usr/bin/python
# Filename: while.py
number = 23
running = True
while running:
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.'
running = False # this causes the while loop to stop
elif guess < number:
print 'No, it is a little higher than that'
else:
print 'No, it is a little lower than that'
else:
print 'The while loop is over.'
# Do anything else you want to do here
print 'Done'
(源文件:code/while.py)
輸出
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
它如何工作
在這個程序中,我們?nèi)匀皇褂昧瞬聰?shù)游戲作為例子,但是這個例子的優(yōu)勢在于用戶可以不斷的猜數(shù),直到他猜對為止——這樣就不需要像前面那個例子那樣為每次猜測重復(fù)執(zhí)行一遍程序。這個例子恰當(dāng)?shù)卣f明了 while 語句的使用。
我們把 raw_input 和 if 語句移到了 while 循環(huán)內(nèi),并且在 while 循環(huán)開始前把 running 變量設(shè)置為 True。首先,我們檢驗變量 running 是否為 True,然后執(zhí)行后面的 while-塊 。在執(zhí)行了這塊程序之后,再次檢驗條件,在這個例子中,條件是 running 變量。如果它是真的,我們再次執(zhí)行 while-塊,否則,我們繼續(xù)執(zhí)行可選的 else-塊,并接著執(zhí)行下一個語句。
當(dāng) while 循環(huán)條件變?yōu)?False 的時候,else 塊才被執(zhí)行——這甚至也可能是在條件第一次被檢驗的時候。如果 while 循環(huán)有一個 else 從句,它將始終被執(zhí)行,除非你的 while 循環(huán)將永遠(yuǎn)循環(huán)下去不會結(jié)束!
True 和 False 被稱為布爾類型。你可以分別把它們等效地理解為值 1 和 0。在檢驗重要條件的時候,布爾類型十分重要,它們并不是真實的值 1。
else 塊事實上是多余的,因為你可以把其中的語句放在同一塊(與 while 相同)中,跟在 while 語句之后,這樣可以取得相同的效果。
給 C/C++程序員的注釋
記住,你可以在 while 循環(huán)中使用一個 else 從句。