目標(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

002_火車(chē)站安檢.png
程序中的判斷

003_判斷示意圖.png
if 今天發(fā)工資:
先還信用卡的錢(qián)
if 有剩余:
又可以happy了,O(∩_∩)O哈哈~
else:
噢,no。。。還的等30天
else:
盼著發(fā)工資
判斷的定義
- 如果 條件滿(mǎn)足,才能做某件事情,
- 如果 條件不滿(mǎn)足,就做另外一件事情,或者什么也不做
正是因?yàn)橛辛伺袛?,才使得程序世界豐富多彩,充滿(mǎn)變化!
判斷語(yǔ)句 又被稱(chēng)為 “分支語(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ù)變量記錄年齡
- 判斷是否滿(mǎn) 18 歲 (>=)
- 如果滿(mǎn) 18 歲,允許進(jìn)網(wǎng)吧嗨皮
# 1. 定義年齡變量
age = 18
# 2. 判斷是否滿(mǎn) 18 歲
# if 語(yǔ)句以及縮進(jìn)部分的代碼是一個(gè)完整的代碼塊
if age >= 18:
print("可以進(jìn)網(wǎng)吧嗨皮……")
# 3. 思考!- 無(wú)論條件是否滿(mǎn)足都會(huì)執(zhí)行
print("這句代碼什么時(shí)候執(zhí)行?")
注意:
-
if語(yǔ)句以及縮進(jìn)部分是一個(gè) 完整的代碼塊
2.3 else 處理?xiàng)l件不滿(mǎn)足的情況
思考
在使用 if 判斷時(shí),只能做到滿(mǎn)足條件時(shí)要做的事情。那如果需要在 不滿(mǎn)足條件的時(shí)候,做某些事情,該如何做呢?
答案
else,格式如下:
if 要判斷的條件:
條件成立時(shí),要做的事情
……
else:
條件不成立時(shí),要做的事情
……
注意:
-
if和else語(yǔ)句以及各自的縮進(jìn)部分共同是一個(gè) 完整的代碼塊
2.4 判斷語(yǔ)句演練 —— 判斷年齡改進(jìn)
需求
- 輸入用戶(hù)年齡
- 判斷是否滿(mǎn) 18 歲 (>=)
- 如果滿(mǎn) 18 歲,允許進(jìn)網(wǎng)吧嗨皮
- 如果未滿(mǎn) 18 歲,提示回家寫(xiě)作業(yè)
# 1. 輸入用戶(hù)年齡
age = int(input("今年多大了?"))
# 2. 判斷是否滿(mǎn) 18 歲
# if 語(yǔ)句以及縮進(jìn)部分的代碼是一個(gè)完整的語(yǔ)法塊
if age >= 18:
print("可以進(jìn)網(wǎng)吧嗨皮……")
else:
print("你還沒(méi)長(zhǎng)大,應(yīng)該回家寫(xiě)作業(yè)!")
# 3. 思考!- 無(wú)論條件是否滿(mǎn)足都會(huì)執(zhí)行
print("這句代碼什么時(shí)候執(zhí)行?")

005_ifelse語(yǔ)句是一個(gè)完整的代碼塊1.png
03. 邏輯運(yùn)算
- 在程序開(kāi)發(fā)中,通常 在判斷條件時(shí),會(huì)需要同時(shí)判斷多個(gè)條件
- 只有多個(gè)條件都滿(mǎn)足,才能夠執(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í)滿(mǎn)足,返回
True - 只要有一個(gè)不滿(mǎn)足,就返回
False
| 條件 1 | 條件 2 | 結(jié)果 |
|---|---|---|
| 成立 | 成立 | 成立 |
| 成立 | 不成立 | 不成立 |
| 不成立 | 成立 | 不成立 |
| 不成立 | 不成立 | 不成立 |
3.2 or
條件1 or 條件2
- 或/或者
- 兩個(gè)條件只要有一個(gè)滿(mǎn)足,返回
True - 兩個(gè)條件都不滿(mǎn)足,返回
False
| 條件 1 | 條件 2 | 結(jié)果 |
|---|---|---|
| 成立 | 成立 | 成立 |
| 成立 | 不成立 | 成立 |
| 不成立 | 成立 | 成立 |
| 不成立 | 不成立 | 不成立 |
3.3 not
not 條件
- 非/不是
| 條件 | 結(jié)果 |
|---|---|
| 成立 | 不成立 |
| 不成立 | 成立 |
邏輯運(yùn)算演練
- 練習(xí)1: 定義一個(gè)整數(shù)變量
age,編寫(xiě)代碼判斷年齡是否正確- 要求人的年齡在 0-120 之間
- 練習(xí)2: 定義兩個(gè)整數(shù)變量
python_score、c_score,編寫(xiě)代碼判斷成績(jī)- 要求只要有一門(mén)成績(jī) > 60 分就算合格
- 練習(xí)3: 定義一個(gè)布爾型變量
is_employee,編寫(xiě)代碼判斷是否是本公司員工- 如果不是提示不允許入內(nèi)
答案 1:
# 練習(xí)1: 定義一個(gè)整數(shù)變量 age,編寫(xiě)代碼判斷年齡是否正確
age = 100
# 要求人的年齡在 0-120 之間
if age >= 0 and age <= 120:
print("年齡正確")
else:
print("年齡不正確")
答案 2:
# 練習(xí)2: 定義兩個(gè)整數(shù)變量 python_score、c_score,編寫(xiě)代碼判斷成績(jī)
python_score = 50
c_score = 50
# 要求只要有一門(mén)成績(jī) > 60 分就算合格
if python_score > 60 or c_score > 60:
print("考試通過(guò)")
else:
print("再接再厲!")
答案 3:
# 練習(xí)3: 定義一個(gè)布爾型變量 `is_employee`,編寫(xiě)代碼判斷是否是本公司員工
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滿(mǎn)足執(zhí)行的代碼
……
elif 條件2:
條件2滿(mǎn)足時(shí),執(zhí)行的代碼
……
elif 條件3:
條件3滿(mǎn)足時(shí),執(zhí)行的代碼
……
else:
以上條件都不滿(mǎn)足時(shí),執(zhí)行的代碼
……
- 對(duì)比邏輯運(yùn)算符的代碼
if 條件1 and 條件2:
條件1滿(mǎn)足 并且 條件2滿(mǎn)足 執(zhí)行的代碼
……
注意
-
elif和else都必須和if聯(lián)合使用,而不能單獨(dú)使用 - 可以將
if、elif和else以及各自縮進(jìn)的代碼,看成一個(gè) 完整的代碼塊
elif 演練 —— 女友的節(jié)日
需求
- 定義
holiday_name字符串變量記錄節(jié)日名稱(chēng) - 如果是 情人節(jié) 應(yīng)該 買(mǎi)玫瑰/看電影
- 如果是 平安夜 應(yīng)該 買(mǎi)蘋(píng)果/吃大餐
- 如果是 生日 應(yīng)該 買(mǎi)蛋糕
- 其他的日子每天都是節(jié)日啊……
holiday_name = "平安夜"
if holiday_name == "情人節(jié)":
print("買(mǎi)玫瑰")
print("看電影")
elif holiday_name == "平安夜":
print("買(mǎi)蘋(píng)果")
print("吃大餐")
elif holiday_name == "生日":
print("買(mǎi)蛋糕")
else:
print("每天都是節(jié)日啊……")
4.2 if 的嵌套
elif 的應(yīng)用場(chǎng)景是:同時(shí) 判斷 多個(gè)條件,所有的條件是 平級(jí) 的
- 在開(kāi)發(fā)中,使用
if進(jìn)行條件判斷,如果希望 在條件成立的執(zhí)行語(yǔ)句中 再 增加條件判斷,就可以使用 if 的嵌套 - if 的嵌套 的應(yīng)用場(chǎng)景就是:在之前條件滿(mǎn)足的前提下,再增加額外的判斷
- if 的嵌套 的語(yǔ)法格式,除了縮進(jìn)之外 和之前的沒(méi)有區(qū)別
- 語(yǔ)法格式如下:
if 條件 1:
條件 1 滿(mǎn)足執(zhí)行的代碼
……
if 條件 1 基礎(chǔ)上的條件 2:
條件 2 滿(mǎn)足時(shí),執(zhí)行的代碼
……
# 條件 2 不滿(mǎn)足的處理
else:
條件 2 不滿(mǎn)足時(shí),執(zhí)行的代碼
# 條件 1 不滿(mǎn)足的處理
else:
條件1 不滿(mǎn)足時(shí),執(zhí)行的代碼
……
if 的嵌套 演練 —— 火車(chē)站安檢
需求
- 定義布爾型變量
has_ticket表示是否有車(chē)票 - 定義整型變量
knife_length表示刀的長(zhǎng)度,單位:厘米 - 首先檢查是否有車(chē)票,如果有,才允許進(jìn)行 安檢
- 安檢時(shí),需要檢查刀的長(zhǎng)度,判斷是否超過(guò) 20 厘米
- 如果超過(guò) 20 厘米,提示刀的長(zhǎng)度,不允許上車(chē)
- 如果不超過(guò) 20 厘米,安檢通過(guò)
- 如果沒(méi)有車(chē)票,不允許進(jìn)門(mén)
# 定義布爾型變量 has_ticket 表示是否有車(chē)票
has_ticket = True
# 定義整數(shù)型變量 knife_length 表示刀的長(zhǎng)度,單位:厘米
knife_length = 20
# 首先檢查是否有車(chē)票,如果有,才允許進(jìn)行 安檢
if has_ticket:
print("有車(chē)票,可以開(kāi)始安檢...")
# 安檢時(shí),需要檢查刀的長(zhǎng)度,判斷是否超過(guò) 20 厘米
# 如果超過(guò) 20 厘米,提示刀的長(zhǎng)度,不允許上車(chē)
if knife_length >= 20:
print("不允許攜帶 %d 厘米長(zhǎng)的刀上車(chē)" % knife_length)
# 如果不超過(guò) 20 厘米,安檢通過(guò)
else:
print("安檢通過(guò),祝您旅途愉快……")
# 如果沒(méi)有車(chē)票,不允許進(jìn)門(mén)
else:
print("大哥,您要先買(mǎi)票啊")
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è)條件之間,使用回車(chē),PyCharm 可以自動(dòng)增加 8 個(gè)空格
if ((player == 1 and computer == 2) or
(player == 2 and computer == 3) or
(player == 3 and computer == 1)):
print("噢耶?。?!電腦弱爆了?。。?)
elif player == computer:
print("心有靈犀,再來(lái)一盤(pán)!")
else:
print("不行,我要和你決戰(zhàn)到天亮!")
5.2 隨機(jī)數(shù)的處理
- 在
Python中,要使用隨機(jī)數(shù),首先需要導(dǎo)入 隨機(jī)數(shù) 的 模塊 —— “工具包”
import random
導(dǎo)入模塊后,可以直接在 模塊名稱(chēng) 后面敲一個(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ò)誤的,下限必須小于上限