零基礎Python完全自學教程11:Python中的選擇語句
歡迎你來到站長學堂,學習站長在線出品的在線課程《零基礎Python完全自學教程》今天給大家分享的是第11課《Python中的選擇語句》。本節(jié)課主要內容有:最簡單的if語句、if...else語句、if...elif...else語句、選擇語句的嵌套。
歡迎你來到站長學堂,學習站長在線出品的在線課程《零基礎python完全自學教程》今天給大家分享的是第11課《Python中的選擇語句》。本節(jié)課主要內容有:最簡單的if語句、if...else語句、if...elif...else語句、選擇語句的嵌套。
選擇語句,也稱為條件語句。即按照條件執(zhí)行不同的代碼片段。
在Python中,選擇語句主要有3種形式,分別是if語句、if...else語句、if...elif...else多分支語句。
11.1、Python中最簡單的if語句
Python中使用if保留字來組成選擇語句,起最簡單的語法形式如下:
if 表達式;
語句塊
其中,表達式可以是一個單純的布爾值或變量,也可以是比較表達式或邏輯表達式(例如,a>b and a!=c),如果表達式為真,就執(zhí)行語句塊;如果表達式的值為假,就跳過語句塊,繼續(xù)執(zhí)行后面的語句。這種形式的if語句相對于漢語里面的“如果……就……”。其執(zhí)行流程圖如下:
圖11.1 最簡單的if語句執(zhí)行流程圖
實例11.1、《射雕英雄傳》中,黃蓉與瑛姑見面的一道數(shù)學題:今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問幾何?
在這里使用if語句判斷用戶輸入的是不是黃蓉所說的“除以三余二,除以五余三,除以七余二”的數(shù),代碼如下:
print("今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問幾何?")
num = int(input("請輸入你認為符合條件的數(shù)字:"))
if (num % 3 == 2) and (num % 5 == 3) and (num % 7 == 2):
print(num,"符合三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二")
運行程序,當輸入23時,執(zhí)行結果如下:
今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問幾何?
請輸入你認為符合條件的數(shù)字:23
23 符合三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二
>>>
當輸入的值,符合條件時,輸出結果。
運行程序,當輸入25時,執(zhí)行結果如下:
今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問幾何?
請輸入你認為符合條件的數(shù)字:25
>>>
當輸入的值,不符合條件時,不會輸出結果。
站長在線誤區(qū)提示:
1、使用if語句的時候,后面沒有加英文冒號:
# if語句未加英文冒號
number = 5
if number == 5
print("number的值為5")
正確的寫法如下:
# if語句結尾處加英文冒號
number = 5
if number == 5:
print("number的值為5")
2、語句位置需要做正確的縮進。
#正確的縮進
height = float(input("請輸入您的身高(單位為米):")) # 輸入身高,單位:米,如:1.70
weight = float(input("請輸入您的體重(單位為千克):")) # 輸入體重,單位:千克,如:65
bmi=weight/(height*height) # 用于計算BMI指數(shù),公式為“體重/身高的平方”
if bmi < 18.5:
print("您的BMI指數(shù)為:"+str(bmi)) # 輸出BMI指數(shù)
print("您的體重過輕 ~@_@~")
上面是正確的縮進,比如輸入身高:1.60,體重35結果如下:
請輸入您的身高(單位為米):1.60
請輸入您的體重(單位為千克):35
您的BMI指數(shù)為:13.671874999999998
您的體重過輕 ~@_@~
>>>
下面我來一個錯誤的縮進,代碼如下:
# 錯誤的縮進
height = float(input("請輸入您的身高(單位為米):")) # 輸入身高,單位:米,如:1.70
weight = float(input("請輸入您的體重(單位為千克):")) # 輸入體重,單位:千克,如:65
bmi=weight/(height*height) # 用于計算BMI指數(shù),公式為“體重/身高的平方”
if bmi < 18.5:
print("您的BMI指數(shù)為:"+str(bmi)) # 輸出BMI指數(shù)
print("您的體重過輕 ~@_@~")
輸入身高:1.60,體重35,執(zhí)行結果如下:
請輸入您的身高(單位為米):1.60
請輸入您的體重(單位為千克):35
您的BMI指數(shù)為:13.671874999999998
您的體重過輕 ~@_@~
>>>
看起來可以執(zhí)行,沒有什么問題,我改成 身高1.60,體重70,執(zhí)行結果如下:
請輸入您的身高(單位為米):1.60
請輸入您的體重(單位為千克):70
您的體重過輕 ~@_@~
>>>
不管bmi的值是否小于18.5都會輸出“您的體重過輕 ~@_@~”。這顯然是錯誤的,與本意不符合,但是程序不會報錯,因此這個bug要特別注意。
11.2、Python中的if...else語句
在Python中,如果遇到只能二選一的條件,那么久使用if...else語句來解決問題。起語法格式如下:
if 表達式:
語句塊1
else:
語句塊2
使用if...else語句時,表達式可以是一個單純的布爾值或變量,也可以是比較表達式或邏輯表達式。
如果滿足條件,則執(zhí)行if后的語句塊;否則,執(zhí)行else后面的語句塊。
這樣的形式的選擇語句相對于漢語里面的“如果......否則......”。其執(zhí)行流程如圖11.2所示:
圖11.2 if...else語句執(zhí)行流程圖
現(xiàn)在我們通過一個實例來講解if...else的使用。
例11.2、判斷輸入的是不是黃蓉所說的數(shù)。
使用if...else語句判斷用戶輸入的數(shù)字是不是黃蓉所說的“除以三余二,除以五余三,除以七余二”的數(shù),代碼如下:
print("今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問幾何?")
num = int(input("請輸入你認為符合條件的數(shù)字:"))
if (num % 3 == 2) and (num % 5 == 3) and (num % 7 == 2):
print(num,"符合三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二")
else:
print(num,"不符合!")
當輸入23時,就是符合條件的數(shù)字,結果如下:
今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問幾何?
請輸入你認為符合條件的數(shù)字:23
23 符合三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二
>>>
當輸入25時,就是不符合條件的數(shù)字,結果如下:
今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問幾何?
請輸入你認為符合條件的數(shù)字:25
25 不符合!
>>>
站長在線誤區(qū)提示:
1、else不可以單獨使用,必須和if一起使用。
2、在程序中使用if...else語句時,如果出現(xiàn)if語句多于else時,那么改else語句就會根據縮進確定該else是屬于哪一個if語句的。如:
#錯誤的縮進代碼示范
a = -1
if a >= 0:
if a > 0:
print("a大于零")
else:
print("a等于零")
上述代碼不會輸出任何信息,因為else語句屬于第3行的if語句,所以當a小于零時,else語句將不執(zhí)行。而修改為:
#正確的縮進代碼示范
a = -1
if a >= 0:
if a > 0:
print("a大于零")
else:
print("a小于零")
這樣的話,就會有輸出結果:a小于零
11.3、Python中的if...elif...else多分支語句。
在Python開發(fā)程序的時候,出現(xiàn)多選一的時候就使用if...elif...else多分支語句。通常表現(xiàn)為“如果滿足某種條件,則進行某種處理,否則,滿足另一種條件,則執(zhí)行另一種處理。”
if...elif...else多分支語句語法格式如下:
if 表達式1
語句塊1
elif 表達式2:
語句塊2
elif 表達式3:
語句塊3
...
else:
語句塊n
使用if...elif...else多分支語句時,表達式可以是一個單純的布爾值或變量,也可以是比較表達式或邏輯表達式。
如果表達式為真,則執(zhí)行語句;如果表達式為假,則跳過該語句,進行下一個elif判斷;只有在所有表達式都為假的情況下,才會執(zhí)行else中的語句。if...elif...else多分支語句執(zhí)行流程如圖11.3所示:
圖11.3 if...elif...else多分支語句執(zhí)行流程圖
注意:if和elif都需要判斷表達式的真假,而else則不需要判斷;另外elif和else都必須跟if一起使用,不能單獨使用。
實例11.3、通過輸入分數(shù),輸出對應的等級(優(yōu)秀、良好、中等、及格、不及格)代碼如下:
fenshu = float(input("請輸入分數(shù):")) #輸入數(shù)據,且轉換成浮點數(shù)
if fenshu > 100 or fenshu < 0:
print("分數(shù)輸入不合理。")
elif fenshu >= 90:
print("優(yōu)秀")
elif fenshu >= 80:
print("良好")
elif fenshu >= 70:
print("中等")
elif fenshu >= 60:
print("及格")
else:
print("不及格")
站長在線特別提醒:大多數(shù)教程使用的是int()函數(shù),轉換成整型數(shù)據,其實是不對的,比如輸入66.5就會報錯了。只有轉換成浮點數(shù)(float)才能正確處理,而不會報錯。
程序執(zhí)行情況及輸出結果:
請輸入分數(shù):66.5
及格
>>>
11.4、Python中選擇語句的嵌套
在本節(jié)課中,我們講到了if語句、if...else語句、if...elif...else多分支語句,這3種形式的選擇語句之間是可以相互嵌套的。
11.4.1、例如:在最簡單的if語句中嵌套if...else語句,語法如下:
if 表達式1:
if 表達式2:
語句塊1
else:
語句塊2
11.4.2、例如:在if...else語句中嵌套if...else語句,語法如下:
if 表達式1:
if 表達式2:
語句塊1
else:
語句塊2
else:
if 表達式3:
語句塊3
else:
語句塊4
站長在線特別提醒:選擇語句可以有多種嵌套方式,當開發(fā)程序時,可以根據自身的需要選擇合適的嵌套方式,但一定要嚴格控制好不同級別的代碼塊縮進量。
實例11.4、使用嵌套語句判斷輸入的年份是不是閏年。代碼如下:
year = int(input("請輸入一個年份:")) # 獲取用戶輸入的年份,并轉換為整型
if year % 4 == 0: # 四年一閏
if year % 100 == 0:
if year % 400 == 0: # 四百年再閏
print(year,"年是閏年")
else: # 百年不閏
print(year,"年不是閏年")
else:
print(year,"年是閏年")
else:
print(year,"年不是閏年")
說明:
判斷一個年份是否為閏年的條件是,可以可以被4整除,但 不能被100整除,或者可以被400整除。
1582年以來的置閏規(guī)則:
普通閏年:公歷年份是4的倍數(shù),且不是100的倍數(shù)的,為閏年(如2004年、2020年等就是閏年)。
世紀閏年:公歷年份是整百數(shù)的,必須是400的倍數(shù)才是閏年(如1900年不是閏年,2000年是閏年)。
運行上面程序,輸入一個閏年的年份,如2020,得到的結果如下:
請輸入一個年份:2020
2020 年是閏年
>>>
重新運行上面程序,輸入一個不是閏年的年份,如2021,得到的結果如下:
請輸入一個年份:2021
2021 年不是閏年
>>>
好了本節(jié)課講到了最簡單的if語句、if...else語句、if...elif...else語句、選擇語句的嵌套。今天的課程不是看的,而是靠大家親自運行的,多寫多練才有進步。今天的課程不好出選擇題了。大家自己練習起來。
下節(jié)預告:零基礎Python完全自學教程12:Python中的循環(huán)語句
相關閱讀:
1、認識python
文末福利:
1、關注站長在線官方公眾號【站長在線】微信號:olzzcom ,文末也有公眾號二維碼,關注公眾號以后回復python,本站精心整理的Python書籍、軟件、工具都實時更新哦!本站所安裝的python3.10、 IDLE中文版 、PyCharm、Visual Studio Code、Sublime Text4等都在里面哦!
2、站長在線官方微信交流群已經開通了,微信掃碼進入,一起交流,一起進步!
本文地址:http://003188.cn/pythonxzyj.html
阿里云虛擬主機1G空間,120元一年
香港、美國虛擬主機100元一年,1000元永久
騰訊云雙十一0.4折起,2核8G5M三年僅700元,2核4G8M三年僅198元
猜你喜歡