您現在的位置是:首頁 >python教程 >python教程十四 條件語句網站首頁python教程
python教程十四 條件語句
條件控制
Python 條件語句是通過一條或多條語句的執行結果(True 或者 False)來決定執行的代碼塊。
可以通過下圖來簡單了解條件語句的執行過程:
flowchat st=>start: 開始 e=>end: 結束 op=>operation: 條件代碼 cond=>condition: 條件 st->cond->op->e cond(true)->op cond(false)->e
代碼執行過程:

if 語句
Python中if語句的一般形式如下所示:
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"
如果"condition_2" 為 True 將執行 "statement_block_2" 塊語句
如果 "condition_2" 為False,將執行"statement_block_3"塊語句
Python 中用 elif 代替了 else if,所以if語句的關鍵字為:if – elif – else。
注意:
1、每個條件后面要使用冒號 :,表示接下來是滿足條件后要執行的語句塊。
2、使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
3、在 Python 中沒有 switch...case 語句,但在 Python3.10 版本添加了 match...case,功能也類似,詳見下文。
Gif 演示:
實例 以下是一個簡單的 if 實例:
#!/usr/bin/python3
var1 = 100
if var1:
print ("1 - if 表達式條件為 true")
print (var1)
var2 = 0
if var2:
print ("2 - if 表達式條件為 true")
print (var2)
print ("Good bye!")
執行以上代碼,輸出結果為:
1 - if 表達式條件為 true 100 Good bye!
從結果可以看到由于變量 var2 為 0,所以對應的 if 內的語句沒有執行。
以下實例演示了狗的年齡計算判斷:
!/usr/bin/python3
age = int(input("請輸入你家狗狗的年齡: "))
print("")
if age <= 0:
print("你是在逗我吧!")
elif age == 1:
print("相當于 14 歲的人。")
elif age == 2:
print("相當于 22 歲的人。")
elif age > 2:
human = 22 + (age -2)*5
print("對應人類年齡: ", human)
### 退出提示
input("點擊 enter 鍵退出")
將以上腳本保存在dog.py文件中,并執行該腳本:
$ python3 dog.py 請輸入你家狗狗的年齡: 1 相當于 14 歲的人。 點擊 enter 鍵退出
以下為if中常用的操作運算符:
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于,比較兩個值是否相等 |
!= | 不等于 |
#!/usr/bin/python3
# 程序演示了 == 操作符
# 使用數字
print(5 == 6)
# 使用變量
x = 5
y = 8
print(x == y)
以上實例輸出結果:
False False
high_low.py文件演示了數字的比較運算:
#!/usr/bin/python3
# 該實例演示了數字猜謎游戲
number = 7
guess = -1
print("數字猜謎游戲!")
while guess != number:
guess = int(input("請輸入你猜的數字:"))
if guess == number:
print("恭喜,你猜對了!")
elif guess < number:
print("猜的數字小了...")
elif guess > number:
print("猜的數字大了...")
執行以上腳本,實例輸出結果如下:
$ python3 high_low.py 數字猜謎游戲! 請輸入你猜的數字:1 猜的數字小了... 請輸入你猜的數字:9 猜的數字大了... 請輸入你猜的數字:7 恭喜,你猜對了!
if 嵌套
在嵌套 if 語句中,可以把 if...elif...else 結構放在另外一個 if...elif...else 結構中。
if 表達式1: 語句 if 表達式2: 語句 elif 表達式3: 語句 else: 語句 elif 表達式4: 語句 else: 語句
# !/usr/bin/python3
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")
將以上程序保存到 test_if.py 文件中,執行后輸出結果為:
$ python3 test.py 輸入一個數字:6 你輸入的數字可以整除 2 和 3
match...case
Python 3.10 增加了 match...case 的條件判斷,不需要再使用一連串的 if-else 來判斷了。
match 后的對象會依次與 case 后的內容進行匹配,如果匹配成功,則執行匹配到的表達式,否則直接跳過,_ 可以匹配一切。
語法格式如下:
match subject: case <pattern_1>: <action_1> case <pattern_2>: <action_2> case <pattern_3>: <action_3> case _: <action_wildcard>
case _: 類似于 C 和 Java 中的 default:,當其他 case 都無法匹配時,匹配這條,保證永遠會匹配成功。
mystatus=400
print(http_error(400))
def http_error(status):
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Something's wrong with the internet"
以上是一個輸出 HTTP 狀態碼的實例,輸出結果為:
Bad request
一個 case 也可以設置多個匹配條件,條件使用 | 隔開,例如:
...
case 401|403|404:
return "Not allowed"