條件迴圈語句組成了Python程式碼的骨架

dongfanger發表於2020-12-10

條件控制

我們都知道流程圖是有多個分支的,程式中也是如此,在Python中是用if語句來判斷程式該走哪個分支的。它的執行過程如下:

條件迴圈語句組成了Python程式碼的骨架

程式碼執行過程如下:

條件迴圈語句組成了Python程式碼的骨架

if

if語句的一般形式如下:

if condition_1:
    statement_block_1
  • 如果condition_1為True,執行statement_block_1。

condition_1是條件表示式,由各種運算子和資料型別組成,條件表示式的結果可以是True/False的布林值,也可以是非布林值。Python中的0、None、空列表、空字典等都會被認為是False,反之都會被認為是True。

else

else語句在條件為False時執行:

if condition_1:
    statement_block_1
else:
    statement_block_2
  • 如果condition_1為True,執行statement_block_1。
  • 如果condition_1為False,執行statement_block_2。

elif

if...else實現了“如果滿足條件,那麼xxx,否則xxx”,除此之外,還可以用elif實現多個連續判斷,分別執行不同的語句:

if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3
  • 如果condition_1為True,執行statement_block_1。
  • 如果condition_1為False,再判斷,如果condition_2為True,執行statement_block_2。
  • 否則,執行statement_block_3。

elif可以寫多個。這種寫法的執行順序是從上往下,只要滿足了某個ifelif的條件,就會在當前分支執行後跳出去,不再執行後面的判斷,如果每個ifelif的條件都是False,最後就會執行else

if巢狀

假如想滿足ifelif的條件後,繼續做判斷,那麼就需要進行if語句巢狀,讓statement_block_1等程式碼塊也包含if語句:

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

示例:

num=int(input("輸入一個數字:"))
if num%2==0:
    if num%3==0:
        print("你輸入的數字可以整除 2 和 3")
    else:
        print("你輸入的數字可以整除 2,但不能整除 3")
else:
    if num%3==0:
        print("你輸入的數字可以整除 3,但不能整除 2")
    else:
        print  ("你輸入的數字不能整除 2 和 3")

迴圈語句

條件語句是從上往下流水式單次執行,迴圈語句和條件語句的不同點在於,迴圈是可以回到起始點,反覆執行多次的,它的執行過程如下:

條件迴圈語句組成了Python程式碼的骨架

while

迴圈語句的一種形式是while語句:

while 判斷條件(condition):
    執行語句(statements)……

它的執行流程圖如下:

條件迴圈語句組成了Python程式碼的骨架

示例:

n = 100
 
sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1
 
print("1 到 %d 之和為: %d" % (n,sum))  # 5050

for

迴圈語句的另一種形式是for語句:

for <variable> in <sequence>:
    <statements>
else:
    <statements>

它的執行流程圖如下:

條件迴圈語句組成了Python程式碼的骨架

示例:

languages = ["C", "C++", "Perl", "Python"]
for x in languages:
    print(x)

break

break用來跳出整個迴圈,它的執行流程圖如下:

條件迴圈語句組成了Python程式碼的骨架

示例:

for letter in 'Runoob':     # 第一個例項
   if letter == 'b':
      break
   print ('當前字母為 :', letter)
  
var = 10                    # 第二個例項
while var > 0:              
   print ('當期變數值為 :', var)
   var = var -1
   if var == 5:
      break
 
print ("Good bye!")

continue

break用來跳出整個迴圈,continue則是用來跳過當前迴圈,回到起點,繼續下一次迴圈。它的執行流程圖如下:

條件迴圈語句組成了Python程式碼的骨架

示例:

for letter in 'Runoob':     # 第一個例項
   if letter == 'o':        # 字母為 o 時跳過輸出
      continue
   print ('當前字母 :', letter)
 
var = 10                    # 第二個例項
while var > 0:              
   var = var -1
   if var == 5:             # 變數為 5 時跳過輸出
      continue
   print ('當前變數值 :', var)
print ("Good bye!")

break和continue在while迴圈和for迴圈中的程式碼執行過程如下:

條件迴圈語句組成了Python程式碼的骨架

條件迴圈語句組成了Python程式碼的骨架

迴圈else

迴圈後面可以加else語句,while...elsefor...else。咋看一下else好像並沒有什麼用,因為while迴圈條件為False或for迴圈結束後,一定會執行接下來的語句。但是如果迴圈中出現了break,當迴圈從break跳出來後,是不會執行else語句的。例如:

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, '等於', x, '*', n//x)
            break
    else:
        # 迴圈中沒有找到元素
        print(n, ' 是質數')

range()函式可以生成數字序列。

無限迴圈

通過設定while迴圈條件始終為True,可以讓迴圈一直進行下去,例如:

while True:
    pass

pass是佔位語句,不執行任何操作。

無限迴圈是很有用的,比如定時任務,每隔5分鐘收1次郵件:

import time

while True:
    receive_email()
    time.sleep(300)
    

還有比如客戶端和伺服器保持連線的心跳機制等。

小結

本文介紹了條件控制和迴圈語句,也就是寫Python常用的ifwhilefor語句,同時也講解了附帶語句elifelsebreakcontinuepass的使用。同時也包括了if巢狀、迴圈else、無限迴圈的知識點。這一部分的知識非常重要,是程式碼的骨架,除了看文章,學程式碼最好的方式是實際敲程式碼。我們建了一個“Python互助討論群”,每週日會有演算法刷題打卡活動(照著答案敲一遍也ok),公眾號後臺回覆“加群”即可加入,有興趣的同學可以一起來相互學習交流呀。

參考資料:

https://www.runoob.com/python3/python3-conditional-statements.html

https://www.runoob.com/python3/python3-loop.html

相關文章