官术网_书友最值得收藏!

1.2 控制語句

Python包含了針對順序、條件執行和迭代等情況的常見的各種控制語句。語句的序列是一組連續編寫的語句。序列中的每一條語句必須以相同的縮進開始。本節將介紹條件執行和迭代的控制語句。

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")

前面討論的numberguess程序包含了一個main函數的定義和如下的if語句:

if __name__ == "__main__":
    main()

上述if語句的作用是,允許程序員要么將模塊當作一個獨立的程序運行,要么從Shell窗口或另一個模塊中導入它。其工作方式為:每個Python模塊都包含一組內建的模塊變量,當加載該模塊時,Python虛擬機會自動為這些變量賦值。

如果該模塊是作為一個獨立的程序加載(要么從一個終端提示符運行它,要么從一個IDLE窗口加載它)的,該模塊的_name_變量會設置為字符串"_main_";否則,這個變量會設置為模塊的名稱,在這個例子中,也就是"numberguess"。不管怎么樣,該變量的賦值都會在模塊中的任何代碼加載之前完成。因此,當執行到模塊末尾的if語句時,只有模塊作為一個獨立的程序啟動,才會調用模塊的main函數。

在開發獨立的程序模塊時,if _name_ == "_main_"這樣的習慣用法很有用,因為這使得程序員只要把模塊導入Shell窗口中就可以看到其相關幫助文檔。同樣,程序員在IDLE中進行模塊開發時,可以在模塊中用這一方法來編寫和運行測試工具函數。

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循環。

主站蜘蛛池模板: 正定县| 普陀区| 河曲县| 泸溪县| 宾阳县| 阜康市| 平顶山市| 凉山| 邻水| 米易县| 碌曲县| 南澳县| 黎川县| 扶沟县| 沙湾县| 滦平县| 洞口县| 池州市| 军事| 阜新| 中宁县| 库尔勒市| 郓城县| 玉龙| 锡林郭勒盟| 竹北市| 南郑县| 上饶县| 阳江市| 黔南| 眉山市| 洛阳市| 柳州市| 同仁县| 三原县| 泉州市| 开封县| 阳新县| 平利县| 许昌县| 隆德县|