[Python]入門教程(三):Python中的控制流

和C++/Java一樣,在Python中有三種控制流語句——if、for和while。

if語句
if語句用來檢驗一個條件, 如果 條件爲真,我們運行一塊語句(稱爲 if-塊 ), 否則我們處理另外一塊語句(稱爲 else-塊 )。 else 從句是可選的。
使用if語句

例1 使用if語句
[python] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. #!/usr/bin/python  
  2. # Filename: if.py   
  3.   
  4. number = 23  
  5. guess = int(input('Enter an integer : '))  
  6.   
  7. if guess == number:  
  8.     print('Congratulations, you guessed it.'# New block starts here  
  9.     print("(but you do not win any prizes!)"# New block ends here  
  10. elif guess < number:  
  11.     print('No, it is a little higher than that'# Another block  
  12.     # You can do whatever you want in a block ...  
  13. else:  
  14.     print('No, it is a little lower than that')   
  15.     # you must have guess > number to reach here  
  16.   
  17. print('Done')  
  18. # This last statement is always executed, after the if statement is executed   


輸出
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)

Done



它如何工作

在這個程序中,我們從用戶處得到猜測的數,然後檢驗這個數是否是我們手中的那個。我們把變量number設置爲我們想要的任何整數,在這個例子中是23。然後,我們使用input()函數取得用戶猜測的數字。函數只是重用的程序段。我們將在下一章學習更多關於函數的知識。

我們爲內建的input函數提供一個字符串,這個字符串被打印在屏幕上,然後等待用戶的輸入。一旦我們輸入一些東西,然後按回車鍵之後,函數返回輸入。對於input函數來說是一個字符串。我們通過int把這個字符串轉換爲整數,並把它存儲在變量guess中。事實上,int是一個類,不過你想在對它所需瞭解的只是它把一個字符串轉換爲一個整數(假設這個字符串含有一個有效的整數文本信息)。

接下來,我們將用戶的猜測與我們選擇的數做比較。如果他們相等,我們打印一個成功的消息。注意我們使用了縮進層次來告訴Python每個語句分別屬於哪一個塊。這就是爲什麼縮進在Python如此重要的原因。希望能夠堅持“每個縮進層一個製表符”的規則。

注意if語句在結尾處包含一個冒號——我們通過它告訴Python下面跟着一個語句塊。

然後,我們檢驗猜測是否小於我們的數,如果是這樣的,我們告訴用戶它的猜測大了一點。我們在這裏使用的是elif從句,它事實上把兩個相關聯的if else-if else語句合併爲一個if-elif-else語句。這使得程序更加簡單,並且減少了所需的縮進數量。

elif和else從句都必須在邏輯行結尾處有一個冒號,下面跟着一個相應的語句塊(當然還包括正確的縮進)。

你也可以在一個if塊中使用另外一個if語句,等等——這被稱爲嵌套的if語句。

記住,elif和else部分是可選的。一個最簡單的有效if語句是:

if True:
print 'Yes, it is true'

在Python執行完一個完整的if語句以及與它相關聯的elif和else從句之後,它移向if語句塊的下一個語句。在這個例子中,這個語句塊是主塊。程序從主塊開始執行,而下一個語句是print 'Done'語句。在這之後,Python看到程序的結尾,簡單的結束運行。

儘管這是一個非常簡單的程序,但是我已經在這個簡單的程序中指出了許多你應該注意的地方。所有這些都是十分直接了當的(對於那些擁有C/C++背景的用戶來說是尤爲簡單的)。它們在開始時會引起你的注意,但是以後你會對它們感到熟悉、“自然”。

給C/C++程序員的註釋

在Python中沒有switch語句。你可以使用if..elif..else語句來完成同樣的工作(在某些場合,使用字典會更加快捷。)


while語句
只要在一個條件爲真的情況下,while語句允許你重複執行一塊語句。while語句是所謂 循環 語句的一個例子。while語句有一個可選的else從句。

使用while語句
例2 使用while語句

[python] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. #!/usr/bin/python  
  2. # Filename: while.py  
  3.   
  4. number = 23  
  5. running = True  
  6.   
  7. while running:  
  8.     guess = int(input('Enter an integer : '))  
  9.   
  10.     if guess == number:  
  11.         print('Congratulations, you guessed it.')   
  12.         running = False # this causes the while loop to stop  
  13.     elif guess < number:  
  14.         print('No, it is a little higher than that')  
  15.     else:  
  16.         print('No, it is a little lower than that')  
  17. else:  
  18.     print('The while loop is over.')  
  19.     # Do anything else you want to do here  
  20.   
  21. print('Done')  

輸出
$ 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 

它如何工作
在這個程序中,我們仍然使用了猜數遊戲作爲例子,但是這個例子的優勢在於用戶可以不斷的猜數,直到他猜對爲止——這樣就不需要像前面那個例子那樣爲每次猜測重複執行一遍程序。這個例子恰當地說明了while語句的使用。

我們把raw_input和if語句移到了while循環內,並且在while循環開始前把running變量設置爲True。首先,我們檢驗變量running是否爲True,然後執行後面的 while-塊 。在執行了這塊程序之後,再次檢驗條件,在這個例子中,條件是running變量。如果它是真的,我們再次執行while-塊,否則,我們繼續執行可選的else-塊,並接着執行下一個語句。

當while循環條件變爲False的時候,else塊才被執行——這甚至也可能是在條件第一次被檢驗的時候。如果while循環有一個else從句,它將始終被執行,除非你的while循環將永遠循環下去不會結束!

True和False被稱爲布爾類型。你可以分別把它們等效地理解爲值1和0。在檢驗重要條件的時候,布爾類型十分重要,它們並不是真實的值1。

else塊事實上是多餘的,因爲你可以把其中的語句放在同一塊(與while相同)中,跟在while語句之後,這樣可以取得相同的效果。

給C/C++程序員的註釋
記住,你可以在while循環中使用一個else從句。 


for循環
for..in是另外一個循環語句,它在一序列的對象上 遞歸 即逐一使用隊列中的每個項目。我們會在後面的章節中更加詳細地學習序列。

使用for語句
例3 使用for語句

[python] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. #!/usr/bin/python  
  2. # Filename: for.py  
  3.   
  4. for i in range(1102): #第三個數字是步長  
  5.     print(i)  
  6. else:  
  7.     print('The for loop is over')  

輸出
$ python for.py
1
3
5

7

9

The for loop is over 

它如何工作
在這個程序中,我們打印了一個 序列 的數。我們使用內建的range函數生成這個數的序列。

我們所做的只是提供兩個數,range返回一個序列的數。這個序列從第一個數開始到第二個數爲止。例如,range(1,5)給出序列[1, 2, 3, 4]。默認地,range的步長爲1。如果我們爲range提供第三個數,那麼它將成爲步長。例如,range(1,5,2)給出[1,3]。記住,range 向上 延伸到第二個數,即它不包含第二個數。

for循環在這個範圍內遞歸——for i in range(1,5)等價於for i in [1, 2, 3, 4],這就如同把序列中的每個數(或對象)賦值給i,一次一個,然後以每個i的值執行這個程序塊。在這個例子中,我們只是打印i的值。

記住,else部分是可選的。如果包含else,它總是在for循環結束後執行一次,除非遇到break語句。

記住,for..in循環對於任何序列都適用。這裏我們使用的是一個由內建range函數生成的數的列表,但是廣義說來我們可以使用任何種類的由任何對象組成的序列!我們會在後面的章節中詳細探索這個觀點。

給C/C++/Java/C#程序員的註釋
Python的for循環從根本上不同於C/C++的for循環。C#程序員會注意到Python的for循環與C#中的foreach循環十分類似。Java程序員會注意到它與Java 1.5中的for (int i : IntArray)相似。
在C/C++中,如果你想要寫for (int i = 0; i < 5; i++),那麼用Python,你寫成for i in range(0,5)。你會注意到,Python的for循環更加簡單、明白、不易出錯。

break語句

break語句是用來 終止 循環語句的,即哪怕循環條件沒有稱爲False或序列還沒有被完全遞歸,也停止執行循環語句。

一個重要的註釋是,如果你從for或while循環中 終止 ,任何對應的循環else塊將不執行。
使用break語句

例4 使用break語句

[python] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. #!/usr/bin/python  
  2. # Filename: break.py  
  3.   
  4. while True:  
  5.     s = input('Enter something : ')  
  6.     if s == 'quit':  
  7.         break  
  8.     print('Length of the string is', len(s))  
  9. print('Done')  



輸出

$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 12
Enter something : quit
Done
它如何工作

在這個程序中,我們反覆地取得用戶地輸入,然後打印每次輸入地長度。我們提供了一個特別的條件來停止程序,即檢驗用戶的輸入是否是'quit'。通過 終止 循環到達程序結尾來停止程序。

輸入字符串的長度通過內建的len函數取得。

記住,break語句也可以在for循環中使用。
G2的Python詩

我在這裏輸入的是我所寫的一段小詩,稱爲G2的Python詩:

Programming is fun
When the work is done
if you wanna make your work also fun:
use Python! 



continue語句
continue語句被用來告訴Python跳過當前循環塊中的剩餘語句,然後 繼續 進行下一輪循環。

使用continue語句
例5 使用continue語句

[python] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. #!/usr/bin/python  
  2. # Filename: continue.py  
  3.   
  4. while True:  
  5.     s = input('Enter something : ')  
  6.     if s == 'quit':  
  7.         break  
  8.     if len(s) < 3:  
  9.         continue  
  10.     print('Input is of sufficient length')  
  11.     # Do other kinds of processing here...   



輸出
$ python continue.py
Enter something : a
Enter something : 12
Enter something : abc
Input is of sufficient length
Enter something : quit 

它如何工作
在這個程序中,我們從用戶處取得輸入,但是我們僅僅當它們有至少3個字符長的時候才處理它們。所以,我們使用內建的len函數來取得長度。如果長度小於3,我們將使用continue語句忽略塊中的剩餘的語句。否則,這個循環中的剩餘語句將被執行,我們可以在這裏做我們希望的任何處理。

注意,continue語句對於for循環也有效。
發佈了0 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章