判斷的定義
• 如果 條件滿足,才能做某件事
• 如果條件不滿足,就做另外一件事,或者什么也不做
正是因為有了判斷,才使得程序世界豐富多彩,充滿變化!
判斷語句 又被稱為”分支語句“,正是因為有了判斷,才讓程序有了很多分支
01. if 判斷語句基本語法
在python中,if語句就是用來進行判斷的,格式如下:
if 要判斷的條件: 條件成立時,要做的事情
注意:代碼的縮進為一個tab鍵,或者4個空格
• 在python開發中,tab和空格不要混用!
我們可以把整個if語句看成一個完整的代碼塊
02. 判斷語句演練——判斷年齡
需求:
1.定義一個整數變量記錄年齡
2.判斷是否滿18歲
3.如果滿18歲,允許進入網吧嗨皮
# 1.定義一個整數變量記錄年齡 age = 19 # 2.判斷年齡是否滿了18歲 if age>=18: # 3.如果滿了18歲,可以進入網吧嗨皮! print("你已經成年,歡迎進入網吧嗨皮!")
注意:
• if 語句以及縮進部分是一個完整的代碼塊
03. lese 處理條件不滿足的情況
思考:
在使用if判斷時,只能做到滿足條件時要做的事情。那如果需要在不滿足條件的時候,做某些事情,該如何做呢?
答案:
else,格式如下
if 要判斷的條件: 條件成立時,要做的事情 ....... else: 條件不成立時,要做的事情 .......
注意:
• if 和 else 語句以及各自的縮進部分共同是一個 完整的代碼塊
04. 判斷語句演練——判斷年齡改進
需求:
1.輸入用戶的年齡
2.判斷是否滿18歲
3.如果滿18歲,允許進網吧嗨皮
4.如果未滿18歲,提示回家寫作業
# 1.輸入用戶的年齡 age = int(input("請輸入你的年齡:")) # 2.判斷是否滿18歲 if age >= 18: # 3.如果滿18歲,允許進網吧嗨皮 print("允許進入網吧嗨皮!") else: # 4.如果未滿18歲,提示回家寫作業 print('未成年人不允許進入,請回家寫作業。') # 5.這句代碼無論條件是否成立都會執行! print('這句代碼什么時候執行?')
05. 邏輯運算
• 在程序開發中,通常在判斷條件時,會需要判斷多個條件
• 只有多個條件都滿足,才能執行后續代碼,這個時候需要使用到邏輯運算符
• 邏輯運算符可以把多個條件按照邏輯進行連接,變成個更復雜的條件
• Python中的邏輯運算符包括:與and / 或or / 非not 三種
5.1 and
條件1 and 條件2
• 與/並且
• 兩個條件要同時滿足,返回True
• 只要有一個不滿足,就返回False
條件1 | 條件2 | 結果 |
成立 | 成立 | 成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
不成立 | 不成立 | 不成立 |
5.2 or
條件1 or 條件2
• 或/或者
• 兩個條件只要有一個滿足,就返回True
• 兩個條件都不滿足,就返回False
條件1 | 條件2 | 結果 |
成立 | 成立 | 成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
不成立 | 不成立 | 不成立 |
5.3 not
not 條件
• 非/不是
條件 | 結果 |
成立 | 不成立 |
不成立 | 成立 |
邏輯運算演練
練習1:定義一個整數變量age,編寫代碼判斷年齡是否正確
• 要求人的年齡在0-120之間
練習2:定義兩個整數變量python_score、c_score,編寫代碼判斷成績
• 要求只要有一門成績>60分就算及格
練習3:定義一個布爾型變量is_employee,編寫代碼判斷是否是本公司員工
• 如果不是,提示不允許入內
# 練習1:定義一個整數變量age,編寫代碼判斷年齡是否正確 age = int(input("輸入你的年齡:")) # 要求人的年齡在0-120之間 if age >= 0 and age <= 120: print('年齡正確') else: print('年齡不正確') # 練習2:定義兩個整數變量python_score、c_score,編寫代碼判斷成績 python_core = int(input("輸入你python語言的成績:")) c_core = int(input("輸入你c語言的成績:")) # 要求只要有一門成績>60分就算及格 if python_core > 60 or c_core > 60: print('及格') else: print('不及格') # 練習3:定義一個布爾型變量is_employee,編寫代碼判斷是否是本公司員工 is_employee = False # 如果不是,提示不允許入內 # 在開發中,通常希望某個條件不滿足時,執行一些代碼可以使用 not # 另外,如果需要拼接復雜的邏輯計算條件,同樣也可以使用到 not if not is_employee: print('不允許進入') else: print('允許進入')
06. if語句進階
6.1 elif
• 在開發中,使用if可以判斷條件
• 使用else 可以處理條件不成立的情況
• 但是,如果希望在增加一些條件,條件不同,需要執行的代碼也不同,就可以使用elif
• 語法格式如下:
if 條件1: 條件1滿足執行的代碼 .... elif 條件2: 條件2滿足執行的代碼 .... elif 條件3: 條件3滿足執行的代碼 .... else: 以上條件都不滿足時,執行的代碼 ....
• 對比邏輯運算符的代碼
if 條件1 and 條件2: 條件1滿足 並且 條件2滿足 執行的代碼
注意:
①. elif 和 else 都必須和if聯合使用,而不能單獨使用
②. 可以將if 、elif 和 else 以及各自縮進的代碼,看成一個完成的代碼塊
elif 演練——女友的節日
需求:
定義 holiday_name 字符串變量記錄節日名稱
如果是 情人節,應該 買玫瑰/看電影
如果時 平安夜 ,應該 買蘋果/吃大餐
如果是 生日,應該 買蛋糕
其他的日子每天都是節日啊.....
# 定義 holiday_name 字符串變量記錄節日名稱 holiday_name = input("請輸入節日名稱:") # 如果是 情人節,應該 買玫瑰/看電影 if holiday_name == '情人節': print('買玫瑰/看電影') # 如果時 平安夜 ,應該 買蘋果/吃大餐 elif holiday_name == "平安夜": print('買蘋果/吃大餐') # 如果是 生日,應該 買蛋糕 elif holiday_name == "生日": print('買蛋糕') # 其他的日子每天都是節日啊..... else: print('每天都是節日啊.....')
6.2 if 的嵌套
elif 的應用場景是:同時 判斷多個條件,所有的條件是平級的
• 在開發中,使用 if 進行條件判斷,如果希望在 條件成立的執行語句中 再 增加條件判斷,就可以使用if的嵌套
• if 的嵌套 的應用場景就是:在之前條件滿足的前提下,再增加額外的判斷
• if 的嵌套 的語法格式,除了縮進之外和之前的沒有區別
• 語法格式如下:
if 條件1: 條件1滿足執行的代碼 ..... if 條件1基礎上的條件2: 條件2滿足時執行的代碼 ..... # 條件2不滿足的處理 else: 條件2不滿足時執行的代碼 # 條件1不滿足的處理 else: 條件1不滿足時執行的代碼 .....
if嵌套 演練——火車站安檢
需求
①.定義布爾型變量has_ticket 表示是否有車票
②.定義整形變量 knife_length 表示刀的長度 ,單位:厘米
③.首先檢查是否有車票,如果有,才允許進行安檢
④.安檢時,需要檢查刀的長度,判斷是否超過20厘米
如果超過20厘米,提示刀的長度,不允許上車
如果不超過20厘米,安檢通過
⑤.如果沒有車票,不允許進門,提示先購買車票
# 定義布爾型變量has_ticket 表示是否有車票 has_ticket = True # 定義整形變量 knife_length 表示刀的長度 ,單位:厘米 knife_length = 30 # 首先檢查是否有車票,如果有,才允許進行安檢 if has_ticket: print('車票檢查通過,准備安檢') # 安檢時,需要檢查刀的長度,判斷是否超過20厘米 # 如果超過20厘米,提示刀的長度,不允許上車 if knife_length > 20: print('攜帶的刀太長,有%d厘米,不允許上車!' % knife_length) # 如果不超過20厘米,安檢通過 else: print('安檢通過') # 如果沒有車票,不允許進門,提示先購買車票 else: print('請先購票')
07. 綜合應用——石頭剪刀布
目標:
①. 強化 多個條件 的邏輯運算
②. 體會 import 導入模塊(“工具包”)的使用
需求
從控制台輸入要出的拳——石頭(1) / 剪刀(2) / 布(3)
電腦隨機出拳——先假定電腦只會出石頭,完成整體代碼功能
比較勝負
序號 | 規則 |
1 | 石頭 勝 剪刀 |
2 | 剪刀 勝 布 |
3 | 布 勝 石頭 |
import random # 從控制台輸入要出的拳——石頭(1) / 剪刀(2) / 布(3) player = int(input('請輸入你出的拳-石頭(1) / 剪刀(2) / 布(3):')) # 電腦隨機出拳——先假定電腦只會出石頭,完成整體代碼功能 computer = 1 print("玩家出%d,電腦出%d" %(player,computer)) # 比較勝負 # 石頭 勝 剪刀 # 剪刀 勝 布 # 布 勝 石頭 # 如果一行代碼太長不方便閱讀,可以使用() 進行調節 if ((player == 1 and computer == 2) or (player == 2 and computer == 3) or (player== 3 and computer == 1)): print("玩家贏,電腦弱爆了!") # 平局 elif player == computer: print('平局,再來一次!') # 其他情況電腦贏 else: print('弱爆了,電腦贏!')
08. 隨機數處理
• 在python中,要使用隨機數,首先需要導入 隨機數 的模塊——“工具包”
import random
• 導入模塊后,可以直接在 模塊名稱 后面敲一個. 然后按Tab鍵,會提示該模塊中包含的所有函數
• random.radint(a,b) 返回 [a,b] 之間的整數 包含 a 和 b
• 例如:
random.randint(12,20) # 生成的隨機數n: 12 <= n <= 20 random.randint(20,20) # 結果永遠都是20 random.randint(20,10) # 該語句是錯誤的,前一個數不能比后一個數大
剪刀石頭布改進版——隨機出
# 導入隨機數的工具包
# 注意:在導入工具包的時候,應該將導入的語句放在文件的頂部
# 因為,這樣可以方便下方的代碼,在任何需要的時候使用工具包中的工具
import random # 從控制台輸入要出的拳——石頭(1) / 剪刀(2) / 布(3) player = int(input('請輸入你出的拳-石頭(1) / 剪刀(2) / 布(3):')) # 電腦隨機出拳 computer = random.randint(1,3) print("玩家出%d,電腦出%d" %(player,computer)) # 比較勝負 # 石頭 勝 剪刀 # 剪刀 勝 布 # 布 勝 石頭 # 如果一行代碼太長不方便閱讀,可以使用() 進行調節 if ((player == 1 and computer == 2) or (player == 2 and computer == 3) or (player== 3 and computer == 1)): print("玩家贏,電腦弱爆了!") # 平局 elif player == computer: print('平局,再來一次!') # 其他情況電腦贏 else: print('弱爆了,電腦贏!')