Python 基礎語法五-控制流

image
在開始進行控制流之前,先要學習一下如何將程式儲存到檔案中。在前面的學習過程中所有的程式碼都是在命令列環境中執行的,輸入一行程式碼 python 直譯器輸出一個結果。當我們開始控制流的學習時我們單次執行的程式碼不止一行,這就不再適用命令列一行一行輸入的情況了,這時我們就需要將我們的程式儲存到一個檔案中,再使用 python 一次執行這個檔案就可以了。python 的檔案以 .py 為檔案字尾。我們來看一個簡單的 python 檔案內容
#!/usr/bin/env python3 # -*- coding: utf-8 -*- 'print hello world' print('Hello World!')
將以上內容儲存為 hello.py
,執行命令 python3 hello.py
程式將輸出 Hello World!
。
接下來來看下檔案內容的含義:
第一行和第二行是註釋行。第一行註釋可以讓該檔案在安裝有 python3 的 Unix/Linux/Mac 裝置上執行,第二行註釋表示該檔案本身使用標準 UTF-8 編碼。
第三行是一個字串,表示模組的文件註釋,任何模組程式碼的第一個字串都被視為模組的文件註釋。
第五行是該檔案真正的程式碼行,在程式執行過程中改行輸出字串 Hello World!
。
在 python 中以 #
開頭的為註釋內容,python 直譯器在執行過程中會跳過該行。
控制流
截止目前為止,所有的程式都是按照程式碼順序來執行的,而實際使用中往往是需要根據輸入來執行不同的操作並輸出不同的結果,者就是今天我們要看的控制流,在 python 中控制流主要分為:條件判斷和迴圈。
條件判斷
計算機之所以可以協助人類做許多工作(且做的比人類更快更好),一個很大的原因是它可以依據輸入作出條件判斷。在 python 中條件判斷主要有 if 語句、else 語句和 elif 語句來完成。我們先來看一下使用示例:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- age = int(input('please enter your age:')) if age >= 18: print('you are an adult') elif age >= 6: print('you are an teenager') else: print('you are an kid')
在以上示例中,使用 if 語句、else 語句和 elif 語句來判斷輸入的年齡。程式會依次執行 if 語句、elif 語句、else 語句,當該語句判斷為 True 時,執行該判斷對應的語句塊並跳過後面的判斷語句。
elif 實際是 else if 的縮寫,同時可存在多個 elif 語句。
在 if age >= 18:
中, if
表示條件判斷語句, age >= 18
表示需要判斷的條件, :
表示判斷語句的結束,後面是語句塊。每個判斷語句後總是有一個語句塊,在 python 中語句塊的定義如下:
Python 開發者有意讓遠反了縮排規則的程式不能通過編譯,以此來強迫程式設計師養成良好的程式設計習慣。並且Python 語言利用縮排表示語句塊的開始和結束(Off-side 規則),而非使用花括號或者某種關鍵字。增加縮表示語句塊的開始,而減少縮排則表示語句塊的結束。縮排成為了語法的一部分。例如 if 語句.
根劇 PEP 的規定,必須使用 4 個空格來表示每級縮排。使用 Tab 字元和其它數目的空格雖然都可以編譯通過,但不符合編碼規範。支援 Tab 字元和其它數目的空格僅僅是為相容很舊的 Python 程式和某些有問題的編輯程式。
根據以上定義,python 語句塊需滿足以下條件:
- 通過縮排的來表示語句塊的開始和結束。
- 縮排必須使用四個空格。
迴圈
在程式的執行過程中往往需要需要重複執行一段程式碼以完成相應的計算任務,這時就需要用到迴圈語句,在 python 中迴圈語句有兩種,第一種是 while 迴圈,只要條件滿足就不斷執行,直至條件不滿足時退出;第二種是 for...in 迴圈,依次遍歷序列中的每個元素。
有迴圈就要有退出,再迴圈中處理條件不滿足是退出以外是否還有其他方式可以退出迴圈呢,這是當然,我們還可以通過 break 語句或 continue 語句來退出迴圈。break 語句用以中斷迴圈語句,直接執行迴圈語句塊以後的內容。continue 語句用來跳過迴圈語句塊中的剩餘語句,開始下一次迴圈執行。
while 迴圈
while 語句主要用來執行一段重複的程式碼,比如我們要計算 100 以內的數的和
#!/usr/bin/env python3 # -*- coding: utf-8 -*- sum = 0 n = 0 while n < 100: sum += n n += 1 print(sum)
在迴圈內部變數 n 不斷加 1,直到 n 大於等於 100 時不再滿足 n < 100
的條件 while 迴圈終止,執行 print 語句。
for 迴圈
for 迴圈主要用來迭代序列中的元素,我們來看一個簡單的示例
#!/usr/bin/env python3 # -*- coding: utf-8 -*- names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name)
執行以上程式碼可以看到 print 語句依次打印出 names 的元素。
在 while 迴圈中我計算了100以內的整數的和,我們是否可以用 for 迴圈來實現相同的內容,答案是肯定的,來看一下程式碼
#!/usr/bin/env python3 # -*- coding: utf-8 -*- sum = 0 for x in range(0, 100): sum += x print(sum)
break 和 continue 語句
break語句用來終止迴圈的執行,continue 語句用來中斷當前迴圈的執行開始下一次迴圈。我們通過以下程式碼來看下二者之間的區別
#!/usr/bin/env python3 # -*- coding: utf-8 -*- sum = 0 for x in range(1, 20): if (x == 10): break print(x) sum += x print('sum = %d' %(sum)) sum = 0 for x in range(1, 20): if (x == 10): continue print(x) sum += x print('sum = %d' %(sum))
執行以上程式碼,輸出結果如下
1 2 3 4 5 6 7 8 9 sum = 45 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 sum = 180
可以看出在使用 break 語句時,for 迴圈直接終止執行,並退出迴圈語句塊執行語句塊後的 print 語句。當使用 continue 語句時僅僅跳過了 x = 10
時的情況,for 迴圈繼續執行後面的內容。