程序流程控制
Python程序中語句執行的順序包括三種基本控制結構:順序結構、選擇結構、循環結構。
順序結構
程序中語句執行的基本順序按各語句出現位置的先後順序執行,稱爲
順序結構
選擇結構
選擇結構可以很據條件來控制代碼的執行分支,也叫分支結構。Python使用
if
語句來實現分支結構。
分支結構的形式
分支結構包含多種形式:單分支,雙分支,多分支
單分支結構
if
語句單分支結構的語法形式如下:
if 條件表達式/(條件表達式):
語句/語句塊
- 條件表達式:可以是關係表達式、邏輯表達式、算術表達式等
- 語句/語句塊:可以是單個語句,也可以是多個語句。多個語句的縮進必須對齊一致。當條件表達式的值爲真(True)時,執行
if
後的語句(塊),否則不做任何操作,控制轉到if
語句的結束點。
條件表達式最後評價爲bool值:Ture(真)或False(假)。
Python評價方法如下,如果表達式結果爲:數值類型(0)、空字符串(“”)、空元組(())、空列表([])、空字典({})
則其bool值爲False(假),否則bool值爲True(真)
雙分支結構
#if語句雙分支結構的語法如下:
if 條件表達式/(條件表達式):
語句/語句塊1
else:
語句/語句塊2
當條件表達式的值爲真(True)時,執行
if
後的語句/語句塊1,否則執行語句/語句塊2
Python提供了下列條件表達式,來實現等價於其他語言的
三元運算符((條件)?語句1:語句2)
的功能
條件爲真時的值 if (條件表達式) else 條件爲假時的值
#如果x>0,則y=x,否則y=0
y=x if (x>=0) else 0
多分支結構
該語句的作用是根據不同的條件表達式的值確定執行哪個語句(塊)
#if語句多分支結構語法形式:
if (條件表達式1):
語句/語句塊1
elif (條件表達式2):
語句/語句塊2
.
.
.
elif (條件表達式n):
語句/語句塊n
[else:
語句/語句塊n+1]
循環結構
循環結構用來重複執行一條或多條語句。使用循環結構,可以減少程序重複書寫的工作量,Python使用
for
語句和while
語句來實現循環結構
可迭代對象
可迭代對象一次返回一個元素,因而適用於循環。Python包括以下幾種可可迭代對象。
- 系列(sequence),例如,字符串(str)、列表(list)、元組(tuple)
- 字典(dict)
- 文件對象
- 迭代器對象(iterator)
- 生成器函數(generator)
迭代器是一個對象,表示可迭代的數據集合,包括方法
__int__()
和__next__()
,可實現迭代功能
生成器是一個函數,使用yield
語句,每次產生一個值,也可以用於循環迭代
range對象
Python3內置對象
range
是一個迭代器對象,迭代時產生指定範圍的數字序列。其格式爲:range(start,stop[,step])
range返回的數值系列從
start
開始,到stop
結束,不包含stop
(左閉右開)。如果指定了可選步長step
,則序列按步長step
增長
注意:Python2中的range的類型爲函數,爲生成器;Python3中的range的類型爲類,是一個迭代器
for循環
for
語句用於遍歷可迭代對象集合中的元素,並對集合中的每個元素執行一次相關的嵌入語句。當集合中的所有元素完成迭代後,並控制傳遞給for
之後的下一個語句
#for語句的格式
for 變量 in 對象集合:
循環體語句/語句塊
while循環
與for循環一樣,while也是一個預測試的循環,但是while在循環開始前,並不知道重複執行循環語句序列的次數。while語句按不同條件執行循環語句(塊)零次或多次
#while循環語句格式:
while (條件表達式):
循環體語句/語句塊
循環的嵌套
在一個循環體內又包含另一個完整循環結構,稱爲循環的嵌套。這種語句結構稱爲多重循環結構。內層循環中還可以包含新的循環,形成多層循環結構
在多層循環中,兩種循環語句(
for
循環,while
循環)可以相互嵌套。多重循環的循環次數等於每一重循環次數的乘積
break語句
break語句用於退出
for
循環,while
循環,即提前結束循環,接着執行循環語句的後繼語句
注意:當多個
for
,while
語句彼此嵌套時,break語句只應用於最裏層的語句,即break語句只能跳出最近的一層循環
continue語句
continue語句類似break,也必須在
for
,while
循環中使用。但它結束本次循環,即跳過循環體內自continue
下面尚未執行的語句,返回到循環的起始處,並根據循環條件判斷是否執行下一次循環。
continue語句與break語句的區別在於:
continue
語句僅結束本次循環,並返回到循環的起始處,循環條件滿足的話就開始執行下一次循環,而break語句則是結束循環,跳轉到循環的後繼語句執行
與break相似,當多個for,while語句彼此嵌套時,continue語句只應用於最裏層的語句
else子句
for、while語句可以附帶一個else子句(可選)。如果for、while語句沒有被
break
語句中止,則會執行else子句,否則不執行
#for循環附帶else語句
for 變量 in 對象集合:
循環體語句(塊)1
else:
語句(塊)2
#while循環附帶else語句
while (條件表達式):
循環體語句(塊)1
else:
語句(塊)2