1. 程式人生 > 其它 >3、流程控制語句

3、流程控制語句

目錄

1、if 語句

基本語法:

if <條件判斷1>:
    <執行1>
elif <條件判斷2>:
    <執行2>
elif <條件判斷3>:
    <執行3>
else:
    <執行4>
  • Python 中用 elif 代替了 else if,所以if語句的關鍵字為:if—elif—else
  • 每個條件後面要使用冒號 :,表示接下來是滿足條件後要執行的語句塊
  • 使用縮排來劃分語句塊,相同縮排數的語句在一起組成一個語句塊
  • 在Python中沒有switch—case語句

例1:小明身高1.75,體重80.5kg。請根據BMI公式(體重除以身高的平方)幫小明計算他的BMI指數,並根據BMI指數:

區間 評價
低於18.5 過輕
18.5-25 正常
25-28 過重
28-32 肥胖
高於32 嚴重肥胖
In:     height=1.75
        weight=80.5
        BMI=round(weight/(height**2),2)
        print("BMI為:",BMI)

Out:    BMI為: 26.29

In:     if BMI<18.5:
            print("過輕")
        elif 18.5<=BMI<25:
            print("正常")
        elif 25<=BMI<28:
            print("過重")
        elif 28<=BMI<32:
            print("肥胖")
        else:
            print("嚴重肥胖")
            
Out:    過重

例2:分析下面的例子為何會出錯

In:     birth = input('birth: ')
        if birth < 2000:
            print('00前')
        else:
            print('00後')

Out:    birth: 1999
        ---------------------------------------------------------------------------
        TypeError                                 Traceback (most recent call last)
        <ipython-input-3-786392a83547> in <module>
              1 birth = input('birth: ')
        ----> 2 if birth < 2000:
              3     print('00前')
              4 else:
              5     print('00後')
        
        TypeError: '<' not supported between instances of 'str' and 'int'

分析:

      因為input()返回的資料型別是strstr不能直接和整數比較,必須先把str轉換成整數。Python提供了int()函式來完成這件事情:

In:     birth = int(input('birth: '))
        if birth < 2000:
            print('00前')
        else:
            print('00後')

Out:    birth: 1999
        00前

例3: if 巢狀判斷是否能被2跟3整除

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

Out:    輸入一個數字:9
        你輸入的數字可以整除 3,但不能整除 2

2、While 語句

基本語法

  • 條件內迴圈執行語句,不滿足條件則退出
while 判斷條件:
    語句
  • 條件內迴圈執行語句1,不滿足條件則執行語句2
while 判斷條件:
    語句1
else:
    語句2
  • 需要注意冒號和縮排。另外,在 Python 中沒有do..while 迴圈。
# 計算 1 到 100 的總和
num=1
sum=0
        
while num<=100: #條件內迴圈,不滿足條件則退出
  sum=sum+num
  num=num+1

print(sum)  

# 5050

無限迴圈

var = 1
while var == 1 :  # 表示式永遠為 true,可以使用 CTRL+C 來退出當前的無限迴圈
    num = int(input("輸入一個數字  :"))
    print ("你輸入的數字是: ", num)

3、For 語句

基本語法

for 變數 in 序列:
    語句1
else:
    語句2
In:     a=['c','c++','python','mysql']
        for x in a:
            print(x)
        else:
            print('迴圈結束')

Out:    c
        c++
        python
        mysql
        迴圈結束

4、break 語句

break 語句用於跳出當前迴圈體

In:     lan=['c','c++','python','mysql']
        for x in a:
            if x=='python':
                print("python,正好跳出")
                break
                print("看看有沒有跳出") # break已跳出,故此句不會打印出來
            else:
                print(x)
        else:
            print("完成迴圈")

Out:    c
        c++
        python,正好跳出

5、range()函式

range()函式,用於遍歷數字序列

In:     for i in range(5): #從0開始(含0),截止到5(不含5)
            print(i)
Out:    0
        1
        2
        3
        4

In:     for i in range(5,9): #從5開始(含5),截止到9(不含9)
            print(i)
Out:    5
        6
        7
        8

In:     for i in range(0, 10, 3): # 從0(含)到10(不含),步長為3
            print(i)
Out:    0
        3
        6
        9

In:     for i in range(-10, -100, -30): # 從-10(含)到-100(不含),步長為-30
            print(i)
Out:    -10
        -40
        -70

In:     a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
        for i in range(len(a)): # i=range(4)
            print(i, a[i])
Out:    0 Google
        1 Baidu
        2 Runoob
        3 Taobao
        4 QQ

In:     # 使用range()函式來建立一個列表:
        a=list(range(5))
        print(a)
Out:    [0, 1, 2, 3, 4]

6、continue語句

  • break語句可以在迴圈過程中直接退出迴圈,
  • continue語句可以提前結束本輪迴圈,並直接開始下一輪迴圈。
  • 這兩個語句通常都必須配合if語句使用。

要特別注意,不要濫用breakcontinue語句。breakcontinue會造成程式碼執行邏輯分叉過多,容易出錯。大多數迴圈並不需要用到breakcontinue語句。

如:打印出1~10的奇數

In:     n=0
        while n < 10:
            n = n + 1
            if n % 2 == 0: # 如果n是偶數,執行continue語句
                continue # continue語句會直接繼續下一輪迴圈,後續的print()語句不會執行
            print(n)

Out:    1
        3
        5
        7
        9

7、pass 語句

  • pass是空語句,是為了保持程式結構的完整性。
  • pass 不做任何事情,一般用做佔位語句,如下例項
while True:
    pass  # 等待鍵盤中斷 (Ctrl+C)