Python分支结构你真的搞定了吗?
分支結構
分支結構能夠讓計算機像人一樣進行思考,應對不同的場景做出不同的回應。
Python中不支持switch語法,目前僅支持if/else形式,但是在Python3.10的測試版本中,貌似支持了switch語法,這里不做例舉。
if
多條if語句出現會逐行進行判斷,條件為真則執行其下的代碼塊,條件為假則略過:
if 條件判斷:邏輯代碼... if 條件判斷:邏輯代碼... if 條件判斷:邏輯代碼...示例演示:
userAge = int(input("請輸入你的年齡:")) if userAge < 18:print("少年") if userAge >= 18 and userAge < 30:print("青年") if userAge >= 30 and userAge < 60:print("中年") if userAge >= 60 and userAge < 80:print("老年") if userAge >=80:print("尚能飯矣")if/else
if代表如果怎樣就怎樣,else代表否則怎樣就怎樣。
一組if/else只會執行其中的一個。
以下是Python中if/else語法:
if 條件判斷:邏輯代碼... else:邏輯代碼...示例演示:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' userinput = input("輸入任意字符,判斷是否為數字串:") if userinput.isdigit():print("是數字串") else:print("不是數字串")if/elif/else
多條if會按順序依次執行,對每一條if語句都進行判定,而如果使用elif則只會從多條邏輯判定中取出最先為True的進行執行,后續的判定將不會被執行。
也就是說,if/elif/else三者只會執行一個。
語法使用如下:
if 條件判斷:邏輯代碼... elif 條件判斷: # 如果條件成立,剩下同級別下的elif與else都不將再繼續執行。邏輯代碼... elif 條件判斷:邏輯代碼... else:邏輯代碼示例演示:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' userAge = int(input(">>>")) if userAge < 18:print("少年") elif userAge < 30:print("青年") elif userAge < 60:print("中年") elif userAge < 80:print("老年") else:print("尚能飯矣")三元表達式
普通形式
如果只是一個簡單if/else判定,我們可以將代碼寫在一行,語法如下:
<on_true> if <condition> else <on_false>示例演示:
age = int(input(">>>")) result = "成年" if age >= 18 else "未成年" print(result)其他形式
上面的三元表達式是最常見的一種,除此之外再介紹幾種不常見的。
第二種,這種有一個BUG,不能區分0或者Fasle:
<condition> and <on_true> or <on_false>如下所示,如果1大于0就返回0,否則返回False,但是第二種的返回的結果永遠是False:
result = 1 > 0 and 0 or False print(result)# False如果使用第一種,就不會有這樣的問題:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' result = 0 if 1 > 0 else False print(result)# False第三種,語法如下:
(<on_false>, <on_true>)[condition]示例如下:
age = int(input(">>>")) result = ("未成年", "已成年") [age >= 18] print(result)第四種,語法如下:
{True: <on_true>, False: <on_false>}[<condition>]示例如下:
age = int(input(">>>")) result = {True: "已成年", False: "未成年"}[age >= 18] print(result)Python語法糖
鏈式比較
在Python中的判定支持一種鏈式比較,下面是常規的比較:
print(3 > 2 and 2 > 1) print(3 > 1 and 1 > 2) # True # False通過鏈式比較進行簡寫:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' print(3 > 2 > 1) print(3 > 1 > 2) # True # False獲得布爾值
判定用戶輸入的是否為數字串,如果為數字串result變量為True,否則為False。
很多情況下,初學者可能會寫出下面這種代碼:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' userInput = input(">>>") result = None if userInput.isdigit():result = True else:result = False print(result)其實一行代碼就可以搞定:
userInput = input(">>>") result = bool(userInput.isdigit()) print(result)或者你也可以使用另一種方式:
userInput = input(">>>") result = userInput.isdigit() or False print(result)總結
以上是生活随笔為你收集整理的Python分支结构你真的搞定了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 5种方法实现单例模式
- 下一篇: Python基础教程:迭代器