1. 程式人生 > >Python流程控制語句詳解

Python流程控制語句詳解

1.程式結構

計算機在解決問題時,分別是順序執行所有語句、選擇執行部分語句、迴圈執行部分語句,分別是:順序結構、選擇結構、迴圈結構。如下圖:

2.選擇語句

  2.1最簡單的if語句

  Python使用保留字if來組成選擇語句,其格式如下:

if 表示式:
   程式碼塊

  表示式可以是一個單純的布林值或者變數,也可以是比較表示式或者邏輯表示式,如果表示式值為真,則執行“程式碼塊”;如果值為假,就跳過“程式碼塊”,執行後面語句,如圖

  

   注:1.在Python中,當表示式的值為非零的數或者非空的字串時,if語句也認為是條件成立(即為真值)。

··     2.使用if語句時,如果只有一條語句,那麼語句塊可以直接寫到冒號“:”的右側。但為了程式碼可讀性不建議這麼做。

     3.常見錯誤: 

1.if語句後面未加冒號
number = 3
if number == 3   #後面未加冒號,正確的是結尾處新增英文半形的冒號:if number == 3:
    print(number)
2.使用if語句時,如果在符合條件時,需要執行多個語句,一定要記得按照邏輯順序進行程式碼縮排,否則程式的本意會有變化,但程式不會報錯,且bug不容易發現。
程式碼1:
number = 3
if number == 3:
  print(number)
print('這個是5')
程式碼2:
number = 3
if number == 3:
  print(number)
  print('這個是5'

  2.2.if  …… else 語句

  Python中提供 if …else 語句來解決兩個選擇問題,其格式如下:

if 表示式:
    語句塊1
else:
    語句塊2

  使用 if …else 語句時,表示式可以是一個單純的布林值或者變數,也可以是比較表示式或者邏輯表示式,如果表示式值為真,則執行“程式碼塊”;如果值為假,執行else後面的程式碼塊。如圖所示:

  

  技巧:

if…else額語句可以使用條件表示式進行簡化,如下:
a = 5
if a > 0:
    b = a
else:
    b = -a
print(b)

簡化:
a = 5
b = a if a > 0 else -a
print(b)

  注:1. 在使用else 語句時,else一定不可以單獨使用,它必須和保留字if一起搭配使用。

    2.程式中使用if…else 語句時,如果出現多個if 語句多餘else語句的情況,那麼該else語句將會根據確定該else 語句屬於哪個if語句。

  2.3.if…elif…else語句

  在開發程式時遇到多選一的情況,則可以使用if …elif…else語句,具體情況如下:

if 表示式1:
    語句塊1
elif 表示式2:
    語句塊2
elif 表示式3:
    語句塊3
…
else:
    語句塊n

  使用 if …elif…else 語句時,表示式可以是一個單純的布林值或者變數,也可以是比較表示式或者邏輯表示式,如果表示式值為真,則執行語句;如果值為假,則跳過該執行語句,進行下一個elif判斷,只有表示式全部為假的情況下,執行else後面的程式碼塊。如圖所示:

   注:1. if 和 elif 都需要判斷表示式的真假,而 else 則不需要判斷;另外 elif 和 elif 都需要跟 if 一起使用,不能單獨使用。

     2. 使用if語句時儘量避免遵循以下原則:

(1).當使用布林型別的變數作為判斷條件時,假設布林型別變數為flag,較為規範格式;
if flag:   #表示為真
if not flag #表示為假
不符合規範格式:
if flag == True:
if flag == False:
(2).使用 " if 1 == a: " 這樣的書寫格式可以防止錯寫成 " if  a = 1: "這種形式,從而避免出錯 

  2.4 if 語句的巢狀

  前面已經介紹了3種形式的 if 語句,這三種都可以進行相互巢狀:

  (1) . 在最簡單的if語句中巢狀 if……else語句,形式如下:

if 表示式1:
    if 表示式2:
        語句塊1
    else:
        語句塊2

  (2). 在if……else中巢狀if……else語句,形式如下:

if 表示式1:
    if 表示式2:
        語句塊1
    else:
        語句塊2
else:
    if 表示式3:
        語句塊3
    else:
        語句塊4

  注:if 選擇語句可以有多種巢狀方式,開發時可以可以根據自身的需要進行選擇合適的巢狀方式,但一定要嚴格控制好不同級別程式碼的縮排量。

3.條件表示式

  在程式開發過程中,經常會根據表示式的結果,有條件的進行賦值,例如返回最大值:

a = 6
b = 3
if a > b:
    c = a
else:
    c = b

  針對以上程式碼,使用條件表示式進行簡化,如下:

a = 6
b = 3
c = a if a > b else b

4.迴圈語句

  4.1 while 迴圈

  while迴圈是通過一個條件來控制是否要繼續反覆執行迴圈體(迴圈體是指一組被重複執行的語句)中的語句。

while 條件表示式:
    迴圈體

  當條件表示式的返回值為真時,則執行迴圈體中的語句,執行完畢後,重新判斷條件表示式的返回值,直到表示式返回的結果為假是退出迴圈體。

  

   注:在使用while迴圈語句時,一定不要忘記新增將迴圈條件改變為Flase的程式碼,否則,將產生死迴圈。但開發中也離不開死迴圈,可根據情況進行編寫。

   4.2. for迴圈

  for 迴圈是一個依次重複執行的迴圈,通常適用於列舉、遍歷序列和物件中的元素。語法如下:

for 迭代變數 in 可迭代物件:
    迴圈體

  迭代變數用於儲存讀除的值,物件為遍歷或迭代的物件,該物件可以是任何有序的序列物件,如字串,列表,元組等,迴圈體為一組被重複執行的語句。

  

  for迴圈語句可以最基本的應用就是進行數值迴圈和遍歷字串。還可以進行遍歷列表、元組、集合和字典。

  4.3. 迴圈巢狀

  在Python中,是允許在一個迴圈體中巢狀另一個迴圈。

  (1). 在while迴圈中巢狀while迴圈

while 條件表示式1:
    while 條件表示式2:
        迴圈體2
    迴圈體1

  (2). 在for 迴圈中巢狀 for 迴圈

for 迭代變數1 in 物件1:
    for 迭代變數2 in 物件2:
        迴圈體2
    迴圈體1

  (3). 在while 迴圈中巢狀 for 迴圈

while 條件表示式:
    for 迭代變數 in 物件:
        迴圈體2
    迴圈體1

  (4). 在 for 迴圈中巢狀 while 迴圈

for 迭代變數 in 物件:
    while 條件表示式:
        迴圈體2
    迴圈體1

  特殊案例:九九乘法表

for i in range(0,10):
    for j in range(1,i+1):
        print(str(j) + "*"  + str(i) + "=" + str(i * j) +"\t" ,end = " "
    print("")

5.跳轉語句

  當迴圈滿足一定條件時,程式會一直執行下去,如果需要在中間離開迴圈,也就是for迴圈結束重複之前,或者while迴圈找到結束條件之前,即break語句和continue語句。

  5.1 break語句

  break可以終止當前迴圈,包括for迴圈和while迴圈在內的所有控制語句。

  在while中使用break語句:

 

while 條件表示式1:
    執行語句
    if 條件表示式2:
        break

  在for 中使用break語句

for 迭代變數 in 物件:
    if 條件表示式:
        break

  

           while語句使用break                                                             for語句中使用break

  5.2.continue語句

  continue語句的作用沒有break語句強大,他只能終止本次迴圈而提前進入下次迴圈中。

  在while中使用continue語句

while 條件表示式1:
    執行程式碼
    if 條件表示式2:
        continue

  在for 中使用continue語句

for 迭代變數 in 物件:
    if 條件表示式:
        continue

         

            while語句使用continue                                                     for語句中使用continue

  注:break與continue的區別

    break語句一般會結合if 語句進行搭配使用,表示在某種條件下,跳出迴圈。如果使用巢狀迴圈,break語句將跳出最內層迴圈。

    continue語句一般也會結合if語句進行搭配使用,表示在某種條件下,跳出當前迴圈的剩下語句,繼續進行下一輪迴圈,如果使用巢狀迴圈,continue語句將只跳過最內層迴圈中剩餘語句。

6.pass語句

  在Python中pass語句表示空語句,它不做任何事情,一般起到站位作用,常用在程式碼除錯等。

#例:
for i in range(1,10):    #輸出1~10的數不包含10
    if i % 2 == 0:         #判斷是否是偶數   
        print(i,end="")     #在同一行列印偶數 
    else:                      #不是偶數
        pass                    #佔位符,不做任何事情,直接跳過

#輸出結果為:
2 4 6 8