歡迎你來到站長學堂,學習站長線上出品的線上課程《零基礎Python完全自學教程》今天給大家分享的是第11課《Python中的選擇語句》。本節課主要內容有:最簡單的if語句、if。。。else語句、if。。。elif。。。else語句、選擇語句的巢狀。
選擇語句,也稱為條件語句。即按照條件執行不同的程式碼片段。
在Python中,選擇語句主要有3種形式,分別是if語句、if。。。else語句、if。。。elif。。。else多分支語句。
11。1、Python中最簡單的if語句
Python中使用if保留字來組成選擇語句,起最簡單的語法形式如下:
if 表示式; 語句塊
其中,表示式可以是一個單純的布林值或變數,也可以是比較表示式或邏輯表示式(例如,a>b and a!=c),如果表示式為真,就執行語句塊;如果表示式的值為假,就跳過語句塊,繼續執行後面的語句。這種形式的if語句相對於漢語裡面的“如果……就……”。其執行流程圖如下:
圖11。1 最簡單的if語句執行流程圖
例項11。1、《射鵰英雄傳》中,黃蓉與瑛姑見面的一道數學題:今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問幾何?
在這裡使用if語句判斷使用者輸入的是不是黃蓉所說的“除以三餘二,除以五餘三,除以七餘二”的數,程式碼如下:
print(“今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問幾何?”)num = int(input(“請輸入你認為符合條件的數字:”))if (num % 3 == 2) and (num % 5 == 3) and (num % 7 == 2): print(num,“符合三三數之剩二,五五數之剩三,七七數之剩二”)
執行程式,當輸入23時,執行結果如下:
今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問幾何?請輸入你認為符合條件的數字:2323 符合三三數之剩二,五五數之剩三,七七數之剩二>>>
當輸入的值,符合條件時,輸出結果。
執行程式,當輸入25時,執行結果如下:
今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問幾何?請輸入你認為符合條件的數字:25>>>
當輸入的值,不符合條件時,不會輸出結果。
站長線上誤區提示:
1、使用if語句的時候,後面沒有加英文冒號:
# if語句未加英文冒號number = 5if number == 5 print(“number的值為5”)
正確的寫法如下:
# if語句結尾處加英文冒號number = 5if number == 5: print(“number的值為5”)
2、語句位置需要做正確的縮排。
#正確的縮排height = float(input(“請輸入您的身高(單位為米):”)) # 輸入身高,單位:米,如:1。70weight = float(input(“請輸入您的體重(單位為千克):”)) # 輸入體重,單位:千克,如:65bmi=weight/(height*height) # 用於計算BMI指數,公式為“體重/身高的平方”if bmi < 18。5: print(“您的BMI指數為:”+str(bmi)) # 輸出BMI指數 print(“您的體重過輕 ~@_@~”)
上面是正確的縮排,比如輸入身高:1。60,體重35結果如下:
請輸入您的身高(單位為米):1。60請輸入您的體重(單位為千克):35您的BMI指數為:13。671874999999998您的體重過輕 ~@_@~>>>
下面我來一個錯誤的縮排,程式碼如下:
# 錯誤的縮排height = float(input(“請輸入您的身高(單位為米):”)) # 輸入身高,單位:米,如:1。70weight = float(input(“請輸入您的體重(單位為千克):”)) # 輸入體重,單位:千克,如:65bmi=weight/(height*height) # 用於計算BMI指數,公式為“體重/身高的平方”if bmi < 18。5: print(“您的BMI指數為:”+str(bmi)) # 輸出BMI指數print(“您的體重過輕 ~@_@~”)
輸入身高:1。60,體重35,執行結果如下:
請輸入您的身高(單位為米):1。60請輸入您的體重(單位為千克):35您的BMI指數為:13。671874999999998您的體重過輕 ~@_@~>>>
看起來可以執行,沒有什麼問題,我改成 身高1。60,體重70,執行結果如下:
請輸入您的身高(單位為米):1。60請輸入您的體重(單位為千克):70您的體重過輕 ~@_@~>>>
不管bmi的值是否小於18。5都會輸出“您的體重過輕 ~@_@~”。這顯然是錯誤的,與本意不符合,但是程式不會報錯,因此這個bug要特別注意。
11。2、Python中的if。。。else語句
在Python中,如果遇到只能二選一的條件,那麼久使用if。。。else語句來解決問題。起語法格式如下:
if 表示式: 語句塊1else: 語句塊2
使用if。。。else語句時,表示式可以是一個單純的布林值或變數,也可以是比較表示式或邏輯表示式。
如果滿足條件,則執行if後的語句塊;否則,執行else後面的語句塊。
這樣的形式的選擇語句相對於漢語裡面的“如果……否則……”。其執行流程如圖11。2所示:
圖11。2 if。。。else語句執行流程圖
現在我們透過一個例項來講解if。。。else的使用。
例11。2、判斷輸入的是不是黃蓉所說的數。
使用if。。。else語句判斷使用者輸入的數字是不是黃蓉所說的“除以三餘二,除以五餘三,除以七餘二”的數,程式碼如下:
print(“今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問幾何?”)num = int(input(“請輸入你認為符合條件的數字:”))if (num % 3 == 2) and (num % 5 == 3) and (num % 7 == 2): print(num,“符合三三數之剩二,五五數之剩三,七七數之剩二”)else: print(num,“不符合!”)
當輸入23時,就是符合條件的數字,結果如下:
今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問幾何?請輸入你認為符合條件的數字:2323 符合三三數之剩二,五五數之剩三,七七數之剩二>>>
當輸入25時,就是不符合條件的數字,結果如下:
今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問幾何?請輸入你認為符合條件的數字:2525 不符合!>>>
站長線上誤區提示:
1、else不可以單獨使用,必須和if一起使用。
2、在程式中使用if。。。else語句時,如果出現if語句多於else時,那麼改else語句就會根據縮排確定該else是屬於哪一個if語句的。如:
#錯誤的縮排程式碼示範a = -1if a >= 0: if a > 0: print(“a大於零”) else: print(“a等於零”)
上述程式碼不會輸出任何資訊,因為else語句屬於第3行的if語句,所以當a小於零時,else語句將不執行。而修改為:
#正確的縮排程式碼示範a = -1if a >= 0: if a > 0: print(“a大於零”)else: print(“a小於零”)
這樣的話,就會有輸出結果:a小於零
11。3、Python中的if。。。elif。。。else多分支語句。
在Python開發程式的時候,出現多選一的時候就使用if。。。elif。。。else多分支語句。通常表現為“如果滿足某種條件,則進行某種處理,否則,滿足另一種條件,則執行另一種處理。”
if。。。elif。。。else多分支語句語法格式如下:
if 表示式1 語句塊1elif 表示式2: 語句塊2elif 表示式3: 語句塊3。。。else: 語句塊n
使用if。。。elif。。。else多分支語句時,表示式可以是一個單純的布林值或變數,也可以是比較表示式或邏輯表示式。
如果表示式為真,則執行語句;如果表示式為假,則跳過該語句,進行下一個elif判斷;只有在所有表示式都為假的情況下,才會執行else中的語句。if。。。elif。。。else多分支語句執行流程如圖11。3所示:
圖11。3 if。。。elif。。。else多分支語句執行流程圖
注意:if和elif都需要判斷表示式的真假,而else則不需要判斷;另外elif和else都必須跟if一起使用,不能單獨使用。
例項11。3、透過輸入分數,輸出對應的等級(優秀、良好、中等、及格、不及格)程式碼如下:
fenshu = float(input(“請輸入分數:”)) #輸入資料,且轉換成浮點數if fenshu > 100 or fenshu < 0: print(“分數輸入不合理。”)elif fenshu >= 90: print(“優秀”)elif fenshu >= 80: print(“良好”)elif fenshu >= 70: print(“中等”)elif fenshu >= 60: print(“及格”)else: print(“不及格”)
站長線上特別提醒:大多數教程使用的是int()函式,轉換成整型資料,其實是不對的,比如輸入66。5就會報錯了。只有轉換成浮點數(float)才能正確處理,而不會報錯。
程式執行情況及輸出結果:
請輸入分數:66。5及格>>>
11。4、Python中選擇語句的巢狀
在本節課中,我們講到了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: 語句塊2else: if 表示式3: 語句塊3 else: 語句塊4
站長線上特別提醒:選擇語句可以有多種巢狀方式,當開發程式時,可以根據自身的需要選擇合適的巢狀方式,但一定要嚴格控制好不同級別的程式碼塊縮排量。
例項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年以來的置閏規則:
普通閏年:公曆年份是4的倍數,且不是100的倍數的,為閏年(如2004年、2020年等就是閏年)。
世紀閏年:公曆年份是整百數的,必須是400的倍數才是閏年(如1900年不是閏年,2000年是閏年)。
執行上面程式,輸入一個閏年的年份,如2020,得到的結果如下:
請輸入一個年份:20202020 年是閏年>>>
重新執行上面程式,輸入一個不是閏年的年份,如2021,得到的結果如下:
請輸入一個年份:20212021 年不是閏年>>>
好了本節課講到了最簡單的if語句、if。。。else語句、if。。。elif。。。else語句、選擇語句的巢狀。今天的課程不是看的,而是靠大家親自執行的,多寫多練才有進步。今天的課程不好出選擇題了。大家自己練習起來。
下節預告:零基礎Python完全自學教程12:Python中的迴圈語句
相關閱讀:
《零基礎Python完全自學教程》彙總
1、認識python
2、安裝python及寫第一個Python程式
3、Python開發工具介紹
4、Python語法特點
5、Python中的變數
6、Python中的基本資料型別
7、Python中的基本輸入和輸出
8、Python中常用的運算子
9、Python中運算子的優先順序和條件表示式
10、Python中的三大程式結構