判斷(if)語(yǔ)句
目標(biāo)
- 開(kāi)發(fā)中的應(yīng)用場(chǎng)景
- if 語(yǔ)句體驗(yàn)
- if 語(yǔ)句進(jìn)階
- 綜合應(yīng)用
01. 開(kāi)發(fā)中的應(yīng)用場(chǎng)景
生活中的判斷幾乎是無(wú)所不在的,我們每天都在做各種各樣的選擇俊啼,如果這樣?如果那樣解寝?……
001_未成年人禁止入內(nèi).jpg
程序中的判斷
003_判斷示意圖.png
if 今天發(fā)工資:
先還信用卡的錢
if 有剩余:
又可以happy了驼仪,O(∩_∩)O哈哈~
else:
噢,no珊楼。通殃。。還的等30天
else:
盼著發(fā)工資
判斷的定義
- 如果 條件滿足厕宗,才能做某件事情画舌,
- 如果 條件不滿足,就做另外一件事情已慢,或者什么也不做
正是因?yàn)橛辛伺袛嗲簦攀沟贸绦蚴澜缲S富多彩,充滿變化佑惠!
判斷語(yǔ)句 又被稱為 “分支語(yǔ)句”朋腋,正是因?yàn)橛辛伺袛啵抛尦绦蛴辛撕芏嗟姆种?/p>
02. if 語(yǔ)句體驗(yàn)
2.1 if 判斷語(yǔ)句基本語(yǔ)法
在 Python
中膜楷,if 語(yǔ)句 就是用來(lái)進(jìn)行判斷的旭咽,格式如下:
if 要判斷的條件:
條件成立時(shí),要做的事情
……
注意:代碼的縮進(jìn)為一個(gè)
tab
鍵赌厅,或者 4 個(gè)空格 —— 建議使用空格
- 在 Python 開(kāi)發(fā)中轻专,Tab 和空格不要混用!
我們可以把整個(gè) if 語(yǔ)句看成一個(gè)完整的代碼塊
004_if語(yǔ)句是一個(gè)完整的代碼塊1.png
2.2 判斷語(yǔ)句演練 —— 判斷年齡
需求
- 定義一個(gè)整數(shù)變量記錄年齡
- 判斷是否滿 18 歲 (>=)
- 如果滿 18 歲察蹲,允許進(jìn)網(wǎng)吧嗨皮
# 1. 定義年齡變量
age = 18
# 2. 判斷是否滿 18 歲
# if 語(yǔ)句以及縮進(jìn)部分的代碼是一個(gè)完整的代碼塊
if age >= 18:
print("可以進(jìn)網(wǎng)吧嗨皮……")
# 3. 思考请垛!- 無(wú)論條件是否滿足都會(huì)執(zhí)行
print("這句代碼什么時(shí)候執(zhí)行?")
注意:
-
if
語(yǔ)句以及縮進(jìn)部分是一個(gè) 完整的代碼塊
2.3 else 處理?xiàng)l件不滿足的情況
思考
在使用 if
判斷時(shí),只能做到滿足條件時(shí)要做的事情洽议。那如果需要在 不滿足條件的時(shí)候宗收,做某些事情,該如何做呢亚兄?
答案
else
混稽,格式如下:
if 要判斷的條件:
條件成立時(shí),要做的事情
……
else:
條件不成立時(shí)审胚,要做的事情
……
注意:
-
if
和else
語(yǔ)句以及各自的縮進(jìn)部分共同是一個(gè) 完整的代碼塊
2.4 判斷語(yǔ)句演練 —— 判斷年齡改進(jìn)
需求
- 輸入用戶年齡
- 判斷是否滿 18 歲 (>=)
- 如果滿 18 歲匈勋,允許進(jìn)網(wǎng)吧嗨皮
- 如果未滿 18 歲,提示回家寫作業(yè)
# 1. 輸入用戶年齡
age = int(input("今年多大了膳叨?"))
# 2. 判斷是否滿 18 歲
# if 語(yǔ)句以及縮進(jìn)部分的代碼是一個(gè)完整的語(yǔ)法塊
if age >= 18:
print("可以進(jìn)網(wǎng)吧嗨皮……")
else:
print("你還沒(méi)長(zhǎng)大洽洁,應(yīng)該回家寫作業(yè)!")
# 3. 思考菲嘴!- 無(wú)論條件是否滿足都會(huì)執(zhí)行
print("這句代碼什么時(shí)候執(zhí)行?")
005_ifelse語(yǔ)句是一個(gè)完整的代碼塊1.png
03. 邏輯運(yùn)算
- 在程序開(kāi)發(fā)中饿自,通常 在判斷條件時(shí)汰翠,會(huì)需要同時(shí)判斷多個(gè)條件
- 只有多個(gè)條件都滿足,才能夠執(zhí)行后續(xù)代碼昭雌,這個(gè)時(shí)候需要使用到 邏輯運(yùn)算符
- 邏輯運(yùn)算符 可以把 多個(gè)條件 按照 邏輯 進(jìn)行 連接复唤,變成 更復(fù)雜的條件
- Python 中的 邏輯運(yùn)算符 包括:與 and/或 or/非 not 三種
3.1 and
條件1 and 條件2
- 與/并且
- 兩個(gè)條件同時(shí)滿足,返回
True
- 只要有一個(gè)不滿足烛卧,就返回
False
條件 1 | 條件 2 | 結(jié)果 |
---|---|---|
成立 | 成立 | 成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
不成立 | 不成立 | 不成立 |
3.2 or
條件1 or 條件2
- 或/或者
- 兩個(gè)條件只要有一個(gè)滿足佛纫,返回
True
- 兩個(gè)條件都不滿足,返回
False
條件 1 | 條件 2 | 結(jié)果 |
---|---|---|
成立 | 成立 | 成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
不成立 | 不成立 | 不成立 |
3.3 not
not 條件
- 非/不是
條件 | 結(jié)果 |
---|---|
成立 | 不成立 |
不成立 | 成立 |
邏輯運(yùn)算演練
- 練習(xí)1: 定義一個(gè)整數(shù)變量
age
总放,編寫代碼判斷年齡是否正確- 要求人的年齡在 0-120 之間
- 練習(xí)2: 定義兩個(gè)整數(shù)變量
python_score
呈宇、c_score
,編寫代碼判斷成績(jī)- 要求只要有一門成績(jī) > 60 分就算合格
- 練習(xí)3: 定義一個(gè)布爾型變量
is_employee
间聊,編寫代碼判斷是否是本公司員工- 如果不是提示不允許入內(nèi)
答案 1:
# 練習(xí)1: 定義一個(gè)整數(shù)變量 age攒盈,編寫代碼判斷年齡是否正確
age = 100
# 要求人的年齡在 0-120 之間
if age >= 0 and age <= 120:
print("年齡正確")
else:
print("年齡不正確")
答案 2:
# 練習(xí)2: 定義兩個(gè)整數(shù)變量 python_score、c_score哎榴,編寫代碼判斷成績(jī)
python_score = 50
c_score = 50
# 要求只要有一門成績(jī) > 60 分就算合格
if python_score > 60 or c_score > 60:
print("考試通過(guò)")
else:
print("再接再厲型豁!")
答案 3:
# 練習(xí)3: 定義一個(gè)布爾型變量 `is_employee`,編寫代碼判斷是否是本公司員工
is_employee = True
# 如果不是提示不允許入內(nèi)
if not is_employee:
print("非公勿內(nèi)")
04. if 語(yǔ)句進(jìn)階
4.1 elif
- 在開(kāi)發(fā)中尚蝌,使用
if
可以 判斷條件 - 使用
else
可以處理 條件不成立 的情況 - 但是迎变,如果希望 再增加一些條件,條件不同飘言,需要執(zhí)行的代碼也不同 時(shí)衣形,就可以使用
elif
- 語(yǔ)法格式如下:
if 條件1:
條件1滿足執(zhí)行的代碼
……
elif 條件2:
條件2滿足時(shí),執(zhí)行的代碼
……
elif 條件3:
條件3滿足時(shí)姿鸿,執(zhí)行的代碼
……
else:
以上條件都不滿足時(shí)谆吴,執(zhí)行的代碼
……
- 對(duì)比邏輯運(yùn)算符的代碼
if 條件1 and 條件2:
條件1滿足 并且 條件2滿足 執(zhí)行的代碼
……
注意
-
elif
和else
都必須和if
聯(lián)合使用,而不能單獨(dú)使用 - 可以將
if
苛预、elif
和else
以及各自縮進(jìn)的代碼句狼,看成一個(gè) 完整的代碼塊
elif 演練 —— 女友的節(jié)日
需求
- 定義
holiday_name
字符串變量記錄節(jié)日名稱 - 如果是 情人節(jié) 應(yīng)該 買玫瑰/看電影
- 如果是 平安夜 應(yīng)該 買蘋果/吃大餐
- 如果是 生日 應(yīng)該 買蛋糕
- 其他的日子每天都是節(jié)日啊……
holiday_name = "平安夜"
if holiday_name == "情人節(jié)":
print("買玫瑰")
print("看電影")
elif holiday_name == "平安夜":
print("買蘋果")
print("吃大餐")
elif holiday_name == "生日":
print("買蛋糕")
else:
print("每天都是節(jié)日啊……")
4.2 if
的嵌套
[圖片上傳失敗...(image-a2fcb1-1573305105676)]
elif 的應(yīng)用場(chǎng)景是:同時(shí) 判斷 多個(gè)條件,所有的條件是 平級(jí) 的
- 在開(kāi)發(fā)中热某,使用
if
進(jìn)行條件判斷腻菇,如果希望 在條件成立的執(zhí)行語(yǔ)句中 再 增加條件判斷,就可以使用 if 的嵌套 - if 的嵌套 的應(yīng)用場(chǎng)景就是:在之前條件滿足的前提下昔馋,再增加額外的判斷
- if 的嵌套 的語(yǔ)法格式筹吐,除了縮進(jìn)之外 和之前的沒(méi)有區(qū)別
- 語(yǔ)法格式如下:
if 條件 1:
條件 1 滿足執(zhí)行的代碼
……
if 條件 1 基礎(chǔ)上的條件 2:
條件 2 滿足時(shí),執(zhí)行的代碼
……
# 條件 2 不滿足的處理
else:
條件 2 不滿足時(shí)秘遏,執(zhí)行的代碼
# 條件 1 不滿足的處理
else:
條件1 不滿足時(shí)丘薛,執(zhí)行的代碼
……
if 的嵌套 演練 —— 火車站安檢
需求
- 定義布爾型變量
has_ticket
表示是否有車票 - 定義整型變量
knife_length
表示刀的長(zhǎng)度,單位:厘米 - 首先檢查是否有車票垄提,如果有榔袋,才允許進(jìn)行 安檢
- 安檢時(shí)周拐,需要檢查刀的長(zhǎng)度铡俐,判斷是否超過(guò) 20 厘米
- 如果超過(guò) 20 厘米凰兑,提示刀的長(zhǎng)度,不允許上車
- 如果不超過(guò) 20 厘米审丘,安檢通過(guò)
- 如果沒(méi)有車票吏够,不允許進(jìn)門
# 定義布爾型變量 has_ticket 表示是否有車票
has_ticket = True
# 定義整數(shù)型變量 knife_length 表示刀的長(zhǎng)度,單位:厘米
knife_length = 20
# 首先檢查是否有車票钧汹,如果有捉邢,才允許進(jìn)行 安檢
if has_ticket:
print("有車票粱腻,可以開(kāi)始安檢...")
# 安檢時(shí),需要檢查刀的長(zhǎng)度售睹,判斷是否超過(guò) 20 厘米
# 如果超過(guò) 20 厘米,提示刀的長(zhǎng)度可训,不允許上車
if knife_length >= 20:
print("不允許攜帶 %d 厘米長(zhǎng)的刀上車" % knife_length)
# 如果不超過(guò) 20 厘米昌妹,安檢通過(guò)
else:
print("安檢通過(guò),祝您旅途愉快……")
# 如果沒(méi)有車票握截,不允許進(jìn)門
else:
print("大哥飞崖,您要先買票啊")
05. 綜合應(yīng)用 —— 石頭剪刀布
目標(biāo)
- 強(qiáng)化 多個(gè)條件 的 邏輯運(yùn)算
- 體會(huì)
import
導(dǎo)入模塊(“工具包”)的使用
需求
- 從控制臺(tái)輸入要出的拳 —— 石頭(1)/剪刀(2)/布(3)
- 電腦 隨機(jī) 出拳 —— 先假定電腦只會(huì)出石頭,完成整體代碼功能
- 比較勝負(fù)
序號(hào) | 規(guī)則 |
---|---|
1 | 石頭 勝 剪刀 |
2 | 剪刀 勝 布 |
3 | 布 勝 石頭 |
5.1 基礎(chǔ)代碼實(shí)現(xiàn)
- 先 假定電腦就只會(huì)出石頭谨胞,完成整體代碼功能
# 從控制臺(tái)輸入要出的拳 —— 石頭(1)/剪刀(2)/布(3)
player = int(input("請(qǐng)出拳 石頭(1)/剪刀(2)/布(3):"))
# 電腦 隨機(jī) 出拳 - 假定電腦永遠(yuǎn)出石頭
computer = 1
# 比較勝負(fù)
# 如果條件判斷的內(nèi)容太長(zhǎng)固歪,可以在最外側(cè)的條件增加一對(duì)大括號(hào)
# 再在每一個(gè)條件之間,使用回車胯努,PyCharm 可以自動(dòng)增加 8 個(gè)空格
if ((player == 1 and computer == 2) or
(player == 2 and computer == 3) or
(player == 3 and computer == 1)):
print("噢耶@紊选!叶沛!電腦弱爆了F蜒丁!恬汁!")
elif player == computer:
print("心有靈犀伶椿,再來(lái)一盤!")
else:
print("不行氓侧,我要和你決戰(zhàn)到天亮脊另!")
5.2 隨機(jī)數(shù)的處理
- 在
Python
中,要使用隨機(jī)數(shù)约巷,首先需要導(dǎo)入 隨機(jī)數(shù) 的 模塊 —— “工具包”
import random
- 導(dǎo)入模塊后偎痛,可以直接在 模塊名稱 后面敲一個(gè)
.
然后按Tab
鍵,會(huì)提示該模塊中包含的所有函數(shù) -
random.randint(a, b)
独郎,返回[a, b]
之間的整數(shù)踩麦,包含a
和b
- 例如:
random.randint(12, 20) # 生成的隨機(jī)數(shù)n: 12 <= n <= 20
random.randint(20, 20) # 結(jié)果永遠(yuǎn)是 20
random.randint(20, 10) # 該語(yǔ)句是錯(cuò)誤的枚赡,下限必須小于上限