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

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