2019-11-09 判斷(if)語(yǔ)句

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

需求

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

注意

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

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

需求

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

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

注意

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

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

需求

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

需求

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

  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è)條件之間,使用回車胯努,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ù)踩麦,包含 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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谓谦,隨后出現(xiàn)的幾起案子贫橙,更是在濱河造成了極大的恐慌,老刑警劉巖反粥,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卢肃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡才顿,警方通過(guò)查閱死者的電腦和手機(jī)莫湘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)郑气,“玉大人幅垮,你說(shuō)我怎么就攤上這事∥沧椋” “怎么了忙芒?”我有些...
    開(kāi)封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)演怎。 經(jīng)常有香客問(wèn)我匕争,道長(zhǎng),這世上最難降的妖魔是什么爷耀? 我笑而不...
    開(kāi)封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任甘桑,我火速辦了婚禮,結(jié)果婚禮上歹叮,老公的妹妹穿的比我還像新娘跑杭。我一直安慰自己,他們只是感情好咆耿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布德谅。 她就那樣靜靜地躺著,像睡著了一般萨螺。 火紅的嫁衣襯著肌膚如雪窄做。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天慰技,我揣著相機(jī)與錄音椭盏,去河邊找鬼。 笑死吻商,一個(gè)胖子當(dāng)著我的面吹牛掏颊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼乌叶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盆偿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起准浴,我...
    開(kāi)封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤事扭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后兄裂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體句旱,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阳藻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年晰奖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腥泥。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匾南,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛔外,到底是詐尸還是另有隱情蛆楞,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布夹厌,位于F島的核電站豹爹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矛纹。R本人自食惡果不足惜臂聋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望或南。 院中可真熱鬧孩等,春花似錦、人聲如沸采够。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹬癌。三九已至权她,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逝薪,已是汗流浹背隅要。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翼闽,地道東北人拾徙。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像感局,于是被迫代替她去往敵國(guó)和親尼啡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暂衡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355