零基礎Python完全自學教程11:Python中的選擇語句

歡迎你來到站長學堂,學習站長線上出品的線上課程《零基礎Python完全自學教程》今天給大家分享的是第11課《Python中的選擇語句》。本節課主要內容有:最簡單的if語句、if。。。else語句、if。。。elif。。。else語句、選擇語句的巢狀。

零基礎Python完全自學教程11:Python中的選擇語句

選擇語句,也稱為條件語句。即按照條件執行不同的程式碼片段。

在Python中,選擇語句主要有3種形式,分別是if語句、if。。。else語句、if。。。elif。。。else多分支語句。

11。1、Python中最簡單的if語句

Python中使用if保留字來組成選擇語句,起最簡單的語法形式如下:

if 表示式; 語句塊

其中,表示式可以是一個單純的布林值或變數,也可以是比較表示式或邏輯表示式(例如,a>b and a!=c),如果表示式為真,就執行語句塊;如果表示式的值為假,就跳過語句塊,繼續執行後面的語句。這種形式的if語句相對於漢語裡面的“如果……就……”。其執行流程圖如下:

零基礎Python完全自學教程11:Python中的選擇語句

圖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所示:

零基礎Python完全自學教程11:Python中的選擇語句

圖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所示:

零基礎Python完全自學教程11:Python中的選擇語句

圖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中的三大程式結構