程序在一般情況下是按順序執行的,就像流水賬一樣,一條一條從上往下順序執行。
有時候我們需要根據條件來有選擇地執行某些語句,這就要使用到Python的條件判斷語句——if。
我們可以通過下圖來簡單了解條件語句的執行過程。
一、if 語句基本形式
語法格式:
1 if 要判斷的條件表達式: 2 條件成立時,要做的事情 3 ……
“表達式”可以是一個單一的值或者變量,也可以是由運算符組成的復雜語句,形式不限,只要它能得到一個值就行。
如果 if 條件成立,則執行后面的語句,執行的語句可以有多行,用縮進表示屬於同一范圍。
注意:代碼的縮進為一個 tab 鍵,或者4個空格,建議使用空格。
在 Python 開發中,Tab 和空格不要混用!
實例:
1 # 1. 定義年齡變量 2 age = 18 3 4 # 2. 判斷是否滿 18 歲 5 # if 語句以及縮進部分的代碼是一個完整的代碼塊 6 if age >= 18: 7 print("可以進網吧嗨皮……") 8 print("這句代碼什么時候執行?")
Python程序語言指定任何非0和非空(null)值為 true,0 或者 null 為 false。
二、操作運算符
if 語句的判斷條件可以使用 >(大於)、=(大於等於)、<=(小於等於)等等符號來表示其關系。
下表列出了 if 中常用的操作運算符。
操作符 | 描述 |
< | 小於 |
<= | 小於或等於 |
> | 大於 |
>= | 大於或等於 |
== | 等於,比較對象是否相等 |
!= | 不等於 |
三、else 結構語句
在使用 if 判斷時,只能做到滿足條件時要做的事情。那如果需要在不滿足條件的時候,做某些事情,該如何做呢?答案就是使用 else 結構語句。
流程圖如下:
語法格式:
1 if 要判斷的條件: 2 條件成立時,要做的事情 3 …… 4 else: 5 條件不成立時,要做的事情 6 ……
實例:
1 # 1. 輸入用戶年齡 2 age = int(input("今年多大了?")) 3 4 # 2. 判斷是否滿 18 歲 5 # if 語句以及縮進部分的代碼是一個完整的語法塊 6 if age >= 18: 7 print("可以進網吧嗨皮……") 8 else: 9 print("你還沒長大,應該回家寫作業!")
四、邏輯運算符
在程序開發中,通常在判斷條件時,會需要同時判斷多個條件。
只有多個條件都滿足,才能夠執行后續代碼,這個時候需要使用到邏輯運算符。
邏輯運算符可以把多個條件按照邏輯進行連接,變成更復雜的條件。
Python 中的邏輯運算符包括:與 and/或 or/非 not 三種。
1. and(與/並且)
條件1 and 條件2
兩個條件同時滿足,返回 True,只要有一個不滿足,就返回 False。
條件1 | 條件2 | 結果 |
成立 | 成立 | 成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
不成立 | 不成立 | 不成立 |
實例:
1 age = 100 2 # 要求人的年齡在 0-120 之間 3 if age >= 0 and age <= 120: 4 print("年齡正確") 5 else: 6 print("年齡不正確")
2. or(或/或者)
條件1 or 條件2
兩個條件只要有一個滿足,返回 True,兩個條件都不滿足,返回 False。
條件1 | 條件2 | 結果 |
成立 | 成立 | 成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
不成立 | 不成立 | 不成立 |
實例:
1 python_score = 50 2 c_score = 50 3 4 # 要求只要有一門成績 > 60 分就算合格 5 if python_score > 60 or c_score > 60: 6 print("考試通過") 7 else: 8 print("再接再厲!")
3. not(非/不是)
not 條件
條件 | 結果 |
成立 | 不成立 |
不成立 | 成立 |
實例:
1 is_employee = True 2 3 # 如果不是提示不允許入內 4 if not is_employee: 5 print("非公勿入")
五、elif 結構語句
在開發中,使用 if 可以判斷條件,使用 else 可以處理條件不成立的情況。
但是,如果希望再增加一些條件,條件不同,需要執行的代碼也不同時,就可以使用 elif。
由於 python 並不支持 switch 語句,所以多個條件判斷,只能用 elif 來實現。
語法格式:
1 if 條件1: 2 條件1滿足執行的代碼 3 …… 4 elif 條件2: 5 條件2滿足時,執行的代碼 6 …… 7 elif 條件3: 8 條件3滿足時,執行的代碼 9 …… 10 else: 11 以上條件都不滿足時,執行的代碼 12 ……
實例:
1 holiday_name = "平安夜" 2 3 if holiday_name == "情人節": 4 print("買玫瑰") 5 print("看電影") 6 elif holiday_name == "平安夜": 7 print("買蘋果") 8 print("吃大餐") 9 elif holiday_name == "生日": 10 print("買蛋糕") 11 else: 12 print("每天都是節日啊……")
不管有多少個分支,都只能執行一個分支,或者一個也不執行,不能同時執行多個分支。
六、if 語句的嵌套
elif 的應用場景是:同時判斷多個條件,所有的條件是平級的。
在開發中,使用 if 進行條件判斷,如果希望在條件成立的執行語句中再增加條件判斷,就可以使用 if 的嵌套。
if 的嵌套的應用場景就是:在之前條件滿足的前提下,再增加額外的判斷。
if 的嵌套的語法格式,除了縮進之外和之前的沒有區別。
語法格式:
1 if 條件 1: 2 條件 1 滿足執行的代碼 3 …… 4 5 if 條件 1 基礎上的條件 2: 6 條件 2 滿足時,執行的代碼 7 …… 8 9 # 條件 2 不滿足的處理 10 else: 11 條件 2 不滿足時,執行的代碼 12 13 # 條件 1 不滿足的處理 14 else: 15 條件1 不滿足時,執行的代碼 16 ……
實例:
1 # 定義布爾型變量 has_ticket 表示是否有車票 2 has_ticket = True 3 4 # 定義整數型變量 knife_length 表示刀的長度,單位:厘米 5 knife_length = 20 6 7 # 首先檢查是否有車票,如果有,才允許進行 安檢 8 if has_ticket: 9 print("有車票,可以開始安檢...") 10 11 # 安檢時,需要檢查刀的長度,判斷是否超過 20 厘米 12 # 如果超過 20 厘米,提示刀的長度,不允許上車 13 if knife_length >= 20: 14 print("不允許攜帶 %d 厘米長的刀上車" % knife_length) 15 # 如果不超過 20 厘米,安檢通過 16 else: 17 print("安檢通過,祝您旅途愉快……") 18 19 # 如果沒有車票,不允許進門 20 else: 21 print("大哥,您要先買票啊")
七、if else 如何判斷表達式是否成立
上面說過,if 和 elif 后面的“表達式”的形式是很自由的,只要表達式有一個結果,不管這個結果是什么類型,Python 都能判斷它是“真”還是“假”。
布爾類型(bool)只有兩個值,分別是 True 和 False,Python 會把 True 當做“真”,把 False 當做“假”。
對於數字,Python 會把 0 和 0.0 當做“假”,把其它值當做“真”。
對於其它類型,當對象為空或者為 None 時,Python 會把它們當做“假”,其它情況當做真。
比如,下面的表達式都是不成立的:
"" #空字符串
[ ] #空列表
( ) #空元組
{ } #空字典
None #空值
實例:
1 b = False 2 if b: 3 print('b是True') 4 else: 5 print('b是False') 6 n = 0 7 if n: 8 print('n不是零值') 9 else: 10 print('n是零值') 11 s = "" 12 if s: 13 print('s不是空字符串') 14 else: 15 print('s是空字符串') 16 l = [] 17 if l: 18 print('l不是空列表') 19 else: 20 print('l是空列表') 21 d = {} 22 if d: 23 print('d不是空字典') 24 else: 25 print('d是空字典') 26 def func(): 27 print("函數被調用") 28 if func(): 29 print('func()返回值不是空') 30 else: 31 print('func()返回值為空')
運行結果:
1 b是False 2 n是零值 3 s是空字符串 4 l是空列表 5 d是空字典 6 函數被調用 7 func()返回值為空
說明:對於沒有 return 語句的函數,返回值為空,也即 None。