Python流程控制語句(Control Flow)


Python用於流程控制的語句包括if,for,while,這些都是從C語言借鑒過來的,然后我們會提到pass語句。

1,if

if的語法很簡答,我們舉一個例子就好,注意關鍵字if, elif, else,一個if復合語句中可以有多個elif。

1 x = int(input("input an integer : "))
2 if x > 0:
3         print x, " > 0"
4 elif x < 0:
5         print x, " < 0"
6 else:
7         print x, " = 0"

 

2,for

Python的for語句和C語言中的for語句是有區別的,C語言的for語句有循環變量初始語句,變化語句,以及一個循環結束條件語句,C的for語句很靈活。

而Python的for語句就是在一個序列(Sequence)上遍歷,按照序列中元素的順序遍歷。  [關於序列參考Python基礎-序列(Sequence)

語法:for item in sequence:

 

2.1 一個基本的例子

1 words = ["feelings", "like", "love"]    #輸出:8 feelings 
2 for word in words:                      #     4 like
3         print len(word), word           #     4 love    

 

2.2 深入

一般情況下不要在for語句的內部去修改被遍歷的序列,為什么呢,因為默認情況下for在遍歷一個sequence的時候是不會事先復制它的,所以如果我們要修改被遍歷的sequence,我們就手動復制一個sequence用於遍歷

如下是一個例子,用words[:]把words給復制下來,結果大家自己實驗一下

1 for word in words[:]:                                                                                                                     
2 print len(word), word 3 if len(word) > 4: 4 words.insert(0, word) 5 print "words : ", words

如果我們在for中不用words[:]替換words,會出現什么情況呢,會出現這個循環永遠也終止不了,因為每循環一次words的長度就增加1,大家動手試驗一下便知。通過這個試驗以及更深入的實驗我們還可以探索出Python for語句的一些實現機制,后面我會寫一篇來探討這個。

 

3,while

Python的while語句和C語言幾乎一樣,只是判斷條件沒有括號圍着。

下面這個例子輸出一個Fibonacci數列

1 a, b = 0, 1
2 fib = []
3 while len(fib) < 10:    #循環條件沒有括號
4     a, b = b, a+b
5     fib.append(b)
6 print fib

輸出:[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

 

4,關於for和while的更多

4.1 break 和 continue

breakcontinue也是從C語言借鑒過來的,而且意義也一樣,break跳出當層循環,continue開始執行循環下一輪。

4.1 屬於for和while的else

循環語句for和while也可以有else,這是當循環完成,也就是沒有被break打破循環的情況才會執行的語句塊

一個例子,找出2~19中的質數,體會下for語句中的break和else。

1 factor = []
2 for n in range(2, 20):
3     for x in range(2, n):
4         if n%x == 0:
5             print n, "=", x, "*", n/x
6             break;
7     else:                  # 這個else是和第3行的for匹配的
8         factor.append(n)
9 print factor

輸出結果:

4 = 2 * 2
6 = 2 * 3

......

[2, 3, 5, 7, 11, 13, 17, 19]

 

5, pass語句

我們今天看的if,while,for都是復合語句(compound statement), 復合語句就是包含其他語句的語句,除了if,while,for還有with,try以及函數和類定義。

而在復合語句中,如果我們什么都不需要做,就可以用pass,這就像C語言中只是一個分號的空語句

一個例子,代碼在這個地方等待鍵盤Ctrl-C來終止。

1 while True:
2     pass

 

 

參考:

1, http://docs.python.org/3.3/tutorial/controlflow.html#if-statements    Python文檔

2, http://docs.python.org/3/reference/compound_stmts.html   Python文檔

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM