- 數據結構(Python語言描述)(第2版)
- (美)肯尼思·A.蘭伯特
- 759字
- 2021-07-09 10:35:21
1.2 控制語句
Python包含了針對順序、條件執行和迭代等情況的常見的各種控制語句。語句的序列是一組連續編寫的語句。序列中的每一條語句必須以相同的縮進開始。本節將介紹條件執行和迭代的控制語句。
1.2.1 條件語句
Python條件語句的結構和其他語言中的類似,即通過關鍵字if、elif和else以及冒號和縮進來實現。
單向if語句的語法如下:
if <Boolean expression>: <sequence of statements>
正如前面提到的,布爾表達式(boolean expression)可以是任意的Python值,其中的一些值被當作False,另一些值被當作True。如果布爾表達式為True,就運行該語句序列;否則,什么也不會發生。語句序列(一條或多條語句)必須至少按照一個空格或制表符(通常一個制表符是4個空格)來縮進或對齊。冒號是唯一的分隔符,如果序列中只有一條語句,它可以緊跟在同一行的冒號之后。
雙向if語句的語法如下:
if <Boolean expression>: <sequence of statements> else: <sequence of statements>
注意縮進和關鍵字else后面的冒號。在這種用法下,只有一個序列將被運行。如果布爾表達式為True,那么第一個序列會被運行;如果布爾表達式為False,那么第二個序列將被運行。
多向if語句的語法如下:
if <Boolean expression>: <sequence of statements> elif <Boolean expression>: <sequence of statements> ... else: <sequence of statements>
多向if語句也只會運行一個語句序列。多向if語句會包含一個或多個不同的布爾表達式,除了第一個布爾表達式,其他布爾表達式都會被寫在關鍵字elif之后。在這種用法里,最后一個else:分支是可以省略的。
下面的示例是比較兩個數的大小的問題,并輸出正確的答案:
if x > y: print("x is greater than y") elif x < y: print("x is less than y") else: print("x is equal to y")
1.2.2 使用if __name__ == "__main__"
前面討論的numberguess程序包含了一個main函數的定義和如下的if語句:
if __name__ == "__main__": main()
上述if語句的作用是,允許程序員要么將模塊當作一個獨立的程序運行,要么從Shell窗口或另一個模塊中導入它。其工作方式為:每個Python模塊都包含一組內建的模塊變量,當加載該模塊時,Python虛擬機會自動為這些變量賦值。
如果該模塊是作為一個獨立的程序加載(要么從一個終端提示符運行它,要么從一個IDLE窗口加載它)的,該模塊的_name_變量會設置為字符串"_main_";否則,這個變量會設置為模塊的名稱,在這個例子中,也就是"numberguess"。不管怎么樣,該變量的賦值都會在模塊中的任何代碼加載之前完成。因此,當執行到模塊末尾的if語句時,只有模塊作為一個獨立的程序啟動,才會調用模塊的main函數。
在開發獨立的程序模塊時,if _name_ == "_main_"這樣的習慣用法很有用,因為這使得程序員只要把模塊導入Shell窗口中就可以看到其相關幫助文檔。同樣,程序員在IDLE中進行模塊開發時,可以在模塊中用這一方法來編寫和運行測試工具函數。
1.2.3 循環語句
Python的while循環語句的結構和其他語言也是類似的。其語法如下。
while <Boolean expression>: <sequence of statements>
下面的示例展示了如何計算從1到10的乘積并輸出結果。
product = 1 value = 1 while value <= 10: product *= value value += 1 print(product)
注意,這里使用了擴展的賦值運算符*=。product *= value這行代碼等價于如下的代碼。
product = product * value
Python中的for循環語句可以用于在值的序列上進行更簡潔的迭代。這條語句的語法如下。
for <variable> in <iterable object>: <sequence of statements>
當運行這個循環時,可迭代對象(iterable object)中的每一個值都被賦給循環變量,并且把這個值應用在其后面的語句序列里。可迭代對象的示例是字符串和列表。下面的代碼使用了Python的range函數,返回整數的一個可迭代的序列,可以計算前面示例中的乘積。
product = 1 for value in range(1, 11): product *= value print(product)
Python程序員通常更喜歡用for循環來迭代確定范圍的值或值的序列。如果繼續循環的條件是某個布爾表達式,那么程序員會使用while循環。
- Java入門經典(第6版)
- Boost C++ Application Development Cookbook(Second Edition)
- Unity 2020 Mobile Game Development
- Learning Bayesian Models with R
- Mastering Drupal 8 Views
- ANSYS Fluent 二次開發指南
- 軟件品質之完美管理:實戰經典
- PySide 6/PyQt 6快速開發與實戰
- ASP.NET程序開發范例寶典
- Visual Basic 6.0程序設計實驗教程
- Web Developer's Reference Guide
- MyBatis 3源碼深度解析
- Mastering VMware Horizon 7(Second Edition)
- Greenplum構建實時數據倉庫實踐
- Ionic3與CodePush初探:支持跨平臺與熱更新的App開發技術