python 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
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ǔ)句演練 —— 判斷年齡

需求

  1. 定義一個(gè)整數(shù)變量記錄年齡
  2. 判斷是否滿(mǎn) 18 歲 (>=
  3. 如果滿(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í),要做的事情
    ……

注意

  • ifelse 語(yǔ)句以及各自的縮進(jìn)部分共同是一個(gè) 完整的代碼塊

2.4 判斷語(yǔ)句演練 —— 判斷年齡改進(jìn)

需求

  1. 輸入用戶(hù)年齡
  2. 判斷是否滿(mǎn) 18 歲 (>=
  3. 如果滿(mǎn) 18 歲,允許進(jìn)網(wǎng)吧嗨皮
  4. 如果未滿(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)算演練

  1. 練習(xí)1: 定義一個(gè)整數(shù)變量 age,編寫(xiě)代碼判斷年齡是否正確
    • 要求人的年齡在 0-120 之間
  2. 練習(xí)2: 定義兩個(gè)整數(shù)變量 python_scorec_score,編寫(xiě)代碼判斷成績(jī)
    • 要求只要有一門(mén)成績(jī) > 60 分就算合格
  3. 練習(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í)行的代碼
    ……

注意

  1. elifelse 都必須和 if 聯(lián)合使用,而不能單獨(dú)使用
  2. 可以將 if、elifelse 以及各自縮進(jìn)的代碼,看成一個(gè) 完整的代碼塊

elif 演練 —— 女友的節(jié)日

需求

  1. 定義 holiday_name 字符串變量記錄節(jié)日名稱(chēng)
  2. 如果是 情人節(jié) 應(yīng)該 買(mǎi)玫瑰看電影
  3. 如果是 平安夜 應(yīng)該 買(mǎi)蘋(píng)果吃大餐
  4. 如果是 生日 應(yīng)該 買(mǎi)蛋糕
  5. 其他的日子每天都是節(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ē)站安檢

需求

  1. 定義布爾型變量 has_ticket 表示是否有車(chē)票
  2. 定義整型變量 knife_length 表示刀的長(zhǎng)度,單位:厘米
  3. 首先檢查是否有車(chē)票,如果有,才允許進(jìn)行 安檢
  4. 安檢時(shí),需要檢查刀的長(zhǎng)度,判斷是否超過(guò) 20 厘米
    • 如果超過(guò) 20 厘米,提示刀的長(zhǎng)度,不允許上車(chē)
    • 如果不超過(guò) 20 厘米,安檢通過(guò)
  5. 如果沒(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)

  1. 強(qiáng)化 多個(gè)條件邏輯運(yùn)算
  2. 體會(huì) import 導(dǎo)入模塊(“工具包”)的使用

需求

  1. 從控制臺(tái)輸入要出的拳 —— 石頭(1)/剪刀(2)/布(3)
  2. 電腦 隨機(jī) 出拳 —— 先假定電腦只會(huì)出石頭,完成整體代碼功能
  3. 比較勝負(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ù),包含 ab

  • 例如:

random.randint(12, 20)  # 生成的隨機(jī)數(shù)n: 12 <= n <= 20   
random.randint(20, 20)  # 結(jié)果永遠(yuǎn)是 20   
random.randint(20, 10)  # 該語(yǔ)句是錯(cuò)誤的,下限必須小于上限
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容