日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

包教包会,7段代码带你玩转Python条件语句

發布時間:2025/3/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 包教包会,7段代码带你玩转Python条件语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:條件語句通過一個或多個布爾表達式的執行結果(真值或假值)決定下一步的執行方向。所謂布爾表達式,即對某個對象進行布爾運算,產生一個bool值。條件語句的運行邏輯為:如果條件被滿足(返回真值),可以做某件事情;如果條件不滿足(返回假值),就做另一件事情,或什么也不做。

作者:李明江 張良均 周東平 張尚佳

如需轉載請聯系大數據(ID:hzdashuju)

通過圖1,可以對條件語句的運行機制作有一個簡單的了解。虛線框內是一個選擇結構,此結構中包含一個判斷條件和兩條執行語句,以及連接各部分的流向線。根據判斷條件(布爾表達式)返回值的情況,程序將選擇執行語句1或語句2。

▲圖1 條件語句結構

在Python中,實現選擇結構最普遍的工具是if語句。此外,try語句專門用于異常處理,其內在邏輯也符合選擇結構。

01 if、elif與else

if語句中包含3種條件判斷句式,即if、elif和else。其中,if與elif部分都包含判斷條件,當判斷條件都不成立時,程序才能執行else部分的代碼。

if語句最基礎的形式是if-else,其基本語法格式如下。

if?條件表達式:操作語句1 else:操作語句2

if-else語句常用的參數及說明:

  • 條件表達式:接收布爾表達式,表示判斷條件是否成立。無默認值

  • 操作語句:接收操作語句,表示執行一段代碼。無默認值

if-else語句執行時,程序首先判斷if部分條件表達式的真假。如果條件表達式返回真值,則執行操作語句1;如果返回假值,則執行操作語句2。

if-else語句的形式很簡單,通過條件判斷的結果即可決定下一步的執行方向,具有兩條分支。以編寫一個賬戶密碼登錄界面為例,介紹該語句的使用,如代碼清單①所示。

  • 代碼清單① if-else語句實現登錄界面

In[1]:????name?=?input?('請輸入用戶名:')password?=?input?('請輸入密碼:')if?name?==?"Lucy"?and?password?==?"123456":print?('****登錄成功,歡迎!*****')else:print?('-----您的輸入有誤,登錄失敗!-----')????Out[1]:????請輸入用戶名:Lucy請輸入密碼:123-----您的輸入有誤,登錄失敗!-----??In[2]:????name?=?input?('請輸入用戶名:')password?=?input?('請輸入密碼:')if?name?==?"Lucy"?and?password?==?"123456":print?('****登錄成功,歡迎!*****')else:print?('-----您的輸入有誤,登錄失敗!-----')????Out[2]:????請輸入用戶名:Lucy請輸入密碼:123456****登錄成功,歡迎!*****???

在代碼清單①中,使用input函數以支持交互式的輸入,并在函數括號內插入文字進行了輸入提示,增強了登錄界面的人性化。在if部分的條件判斷式中,使用and運算符進行且運算,只有賬戶和密碼都輸入正確才能成功登錄,從而增加了安全性。

if-else語句可以縮減為單行形式,其基本語法格式如下。

操作語句1?if?條件表達式?else?操作語句2

if-else語句單行形式語法格式中的參數說明與圖1一致。如果條件表達式返回的結果為真,則執行if前面的操作語句1,否則執行else后面的操作語句2。

if-else語句使用單行形式的目的主要在于增加代碼的簡潔性,其基本使用方法如代碼清單②所示。

  • 代碼清單② if-else語句的單行形式

In[3]:????num1,?num2?=?11,?90print('num1加num2為百分數')?if?1000?>?num1?+?num2?>100?else?print('num1加num2不為百分數')?Out[3]:????num1加num2為百分數

if-else語句有明顯的缺陷,即只能實現兩條分支。實際工作中需要用到的條件分支數目可能難以想象,擴展if語句的分支需要用到elif句式。elif是“else if”的縮寫,即“下一條件是否成立?”。

使用elif有簡潔、減少過分縮排的效果。將elif代碼塊放在if和else之間,就組成了if-elif-else語句。理論上,if語句中的elif可以無限多。if-elif-else語句與if-else語句其實是等價的,后者相當于前者中elif個數為0或不執行的情況。由于if-elif-else語句能提供更多條件分支,因此被普遍使用,其基本語法格式如下。

if?條件表達式1:操作語句1 elif?條件表達式2:操作語句2 else:操作語句3

if-elif-else語句語法格式中的參數與上文說明一致。該語句執行時,按照從上到下的順序,依次檢查每個條件表達式返回值的情況,任何一個條件表達式返回真值,就執行該表達式下面的操作語句。若所有條件表達式都返回假值,則執行else下面的操作語句。

if-elif-else語句相對于if-else語句優勢明顯,可以實現更為復雜的功能。使用if-elif-else語句實現年齡段的判斷,如代碼清單③所示。

  • 代碼清單③ 使用if-elif-else語句實現年齡段的判斷

In[4]:????age?=?input('請輸入您的年齡:')age?=?int(age)if?age?<?18:print('未成年人!')elif?age?>=?18?and?age?<=?25:print('青年人!')elif?age?>?25?and?age?<=?60:print('中年人!')else:print('老年人!')???Out[4]:????請輸入您的年齡:?20青年人!????

代碼清單③通過比較運算符實現了年齡段劃分,并能區分年齡段界限,避免邏輯出錯。input函數將接收的任何數據類型都默認為str,如果不在該代碼中插入轉換接收數據類型的語句,程序將無法執行。這是因為,接收的年齡數據會被用于和后續的年齡數值比較,而number與str是無法比較的。

需要說明,if語句還有一種形式是if-if-else,這一形式中的if可以有多個,從而實現多分支。與if-elif-else語句相比,差異不僅僅存在于形式上,性能上也同樣有區別,使用多個if的效率更低,它實際上是多重if語句。

if語句支持嵌套,即在一個if語句中嵌入另一個if語句,從而構成不同層次的選擇結構。嵌套的意義在于實現多層選擇結構。使用嵌套對條件語句的功能有升華作用,這與elif是相似的,elif將有限的條件分支擴展,嵌套則提供了建立多層選擇結構的工具,兩者分別在不同的維度上提升了if語句的功能性。使用嵌套需要以不同的縮進長度劃分代碼結構的層次,因此嵌套時要特別注意縮進的規范性。

嵌套選擇結構具有很廣的應用場景,以下給出一個例子。假設系統中存儲了5個用戶的身份信息,分別是:來自英國的Tom,35歲;來自法國的Frank,35歲;來自德國的Bob,35歲;來自澳大利亞的Washington,51歲;來自南非的Jane,21歲。

設計一個程序,詢問用戶的部分信息,在對方不說出自己名字的情況下識別其身份,如代碼清單④所示。

  • 代碼清單④ 嵌套if-elif-else語句

In[5]:????age?=?input('請輸入你的年齡:')age?=?int(age)if?age?==?35:nation?=?input('請輸入你的國籍:')if?nation?==?'英國':print('你是Tom!?')elif?(nation?==?'法國'):print('你是Frank!?')else:print('你是Bob!?')elif?age?==?21:print('你是Jane,來自南非!?')elif?age?==?51:print('你是Washington,來自澳大利亞!?')else:print('請輸入正確年齡值!?')??Out[5]:????請輸入你的年齡:35請輸入你的國籍:法國你是Frank!????

從代碼清單④可以看到,該程序具有兩層選擇結構。第1層用于詢問年齡,程序通過接收的年齡,可以判斷輸入者是Jane、Washington或其他3個同齡人中的一個;若收到的值不在這5人年齡范圍中,則提示輸入出錯;若收到的值是3個同齡人的歲數,則進入下一層選擇結構,即詢問國籍;通過詢問國籍,程序可以準確報出輸入者的信息。

使用if語句時,需要注意以下幾點。

  • 條件判斷語句應盡量簡單,若語句復雜則應當將運算先放到一個變量中。

  • Python的條件語句中允許常用的數值比較運算(==,!=,>,>=,<,<=)。

  • Python允許無限次if語句嵌套,但實際編程中如果必須用到3級到4級嵌套,建議考慮用其他方法編寫代碼,嵌套超過兩層會使程序的運行效率大打折扣。

  • 02 try、except與else

    如果運行途中發生錯誤事件,程序的執行將中斷,并創建異常對象。異常是程序在正常流程控制以外采取的動作,當它被引發時,計算機將自動尋找異常處理程序,以幫助程序恢復正常運行。

    要保證程序的正常運行,就需要排除錯誤,錯誤要么是語法上的,要么是邏輯上的。語法錯誤的出現表明程序在結構上出現了問題,可以在程序執行前加以糾正。邏輯錯誤可能是缺少輸入或輸入不正確,某些情況下,也可能是根據輸入無法生成預期的結果。邏輯錯誤難以預防,必須使用異常處理程序來應對。

    計算機語言針對可能出現的錯誤定義了異常類型,某種錯誤引發對應的異常時,異常處理程序將被啟動,從而恢復程序的正常運行。Python中定義的異常類型大致分為數值計算錯誤、操作系統錯誤、無效數據查詢、Unicode相關的錯誤和警告等幾類,如下所示。

    Python異常類:

    • BaseException:所有異常的基類

    • Exception:常規異常的基類

    • StandardError:所有的內建標準異常的基類

    • ArithmeticError:所有數值計算異常的基類

    • FloatingPointError:浮點計算異常

    • OverflowError:數值運算超出最大限制

    • ZeroDivisionError:除零

    • AssertionError:斷言語句失敗

    • AttributeError:對象不包含某個屬性

    • EOFError:沒有內建輸入,到達EOF標記

    • EnvironmentError:操作系統異常的基類

    • IOError:輸入/輸出操作失敗

    • OSError:操作系統異常

    • WindowsError:系統調用失敗

    • ImportError:導入模塊/對象失敗

    • KeyboardInterrupt:用戶中斷執行

    • LookupError:無效數據查詢的基類

    • IndexError:序列中沒有此索引

    • KeyError:映射中沒有這個鍵

    • MemoryError:內存溢出異常

    • NameError:未聲明/初始化對象

    • UnboundLocalError:訪問未初始化的本地變量

    • ReferenceError:弱引用試圖訪問已經垃圾回收了的對象

    • RuntimeError:一般的運行時異常

    • NotImplementedError:尚未實現的方法

    • SyntaxError:語法錯誤導致的異常

    • IndentationError:縮進錯誤導致的異常

    • TabError:Tab和空格混用

    • SystemError:一般的解釋器系統異常

    • TypeError:對類型無效的操作

    • ValueError:傳入無效的參數

    • UnicodeError:Unicode相關的異常

    • UnicodeDecodeError:Unicode解碼時的異常

    • UnicodeEncodeError:Unicode編碼錯誤導致的異常

    • UnicodeTranslateError:Unicode轉換錯誤導致的異常

    • Warning:警告的基類

    • DeprecationWarning:關于被棄用的特征的警告

    • FutureWarning:關于構造將來語義會有改變的警告

    • UserWarning:用戶代碼生成的警告

    • PendingDeprecationWarning:關于特性將會被廢棄的警告

    • RuntimeWarning:可疑的運行時行為(runtime behavior)的警告

    • SyntaxWarning:可疑語法的警告

    • ImportWarning:用于在導入模塊過程中觸發的警告

    • UnicodeWarning:與Unicode相關的警告

    • BytesWarning:與字節或字節碼相關的警告

    • ResourceWarning:與資源使用相關的警告

    異常體系內部有層次關系,即某些異常屬于某個異常的子類,該異常又可能是另一異常的子類。較低層次、更具細節的異常是某些異常的子類,這些高層次的異常則稱為基類,子類和基類是相對的。Python異常體系中的部分關系如圖2所示。

    ▲圖2 Python常見異常體系

    在圖2中,越下面的異常,其層次越低,細節更明顯,它們總有更高層次的基類。

    Python使用try語句處理異常,該語句一般包括try、except和else三個句式,組成try-except-else的形式。try部分包含一個嘗試執行的代碼塊,except部分是特定異常的處理對策,else部分則在程序運行正常時執行。

    try語句可以視為一種條件分支,與if語句的區別是try語句并不包含條件判斷式,執行的流向也不取決于條件表達式,而依賴于代碼塊能否執行。但其內在邏輯和運行流程與if語句是相似的,符合條件分支的特征,其基本語法格式如下。

    try:操作語句1 except?錯誤類型1:操作語句2 except?錯誤類型2:操作語句3 else:操作語句4

    try語句常用的語法格式及其參數說明如下所示。

    try-except-else語句常用的語法格式及其參數說明:

    • 錯誤類型:接收Python異常名,表示符合該異常則執行下面語句。無默認值

    • 操作語句:接收操作語句,表示執行一段代碼。無默認值

    運行try-except-else語句時,程序首先執行try代碼塊,即可能出錯的試探性語句,這可能導致致命性錯誤使得程序無法繼續執行;如果try代碼塊確實無法執行,就可能執行某個except代碼塊。

    執行一個except代碼塊的條件是,系統捕捉的異常類型和該代碼塊標識的類型相符合;如果try代碼塊的語句正常執行,就接著執行else代碼塊的語句。

    如果try部分無法執行,也沒有找到相應的except代碼塊,就將異常消息發送給程序調用端,如Python Shell,Python Shell對異常消息的默認處理則是終止程序的執行并打印具體的出錯信息。這也是在Python Shell中執行程序錯誤后所出現的出錯打印信息的由來。

    在try語句中,except與else代碼塊都是可選的。except代碼塊可以有0或多個;else代碼塊可以有0或1個。但要注意,else語句的存在必須以except語句的存在為前提,在沒有except語句的try語句中使用else語句,會引發語法錯誤。

    try語句中沒有else時,就構成try-except語句,如代碼清單⑤所示。

    • 代碼清單⑤ try語句處理除零異常

    In[6]:????number?=?0#?以變量number作被除數,嘗試運行除法操作try:print('1.0?/?number?=',?1.0?/?number)#?如果異常是除零異常,輸出提示信息except?ZeroDivisionError:print('***除數為0***')?Out[6]:????***除數為0***

    在代碼清單⑤中,由于0不能做除數,因此引發了除零異常。except代碼塊由于給出了ZeroDivisionError的解決方案,因此被執行,程序得以完整地運行。

    代碼清單⑤所展示的異常之間的層次差別是有意義的,這在程序執行過程中可以體現,如代碼清單⑥所示。

    • 代碼清單⑥ Python異常層次差異

    In[7]:????dict1={'a':?1,?'b':?2,?'v':?22}#?嘗試索引賦值dict中不存在的值try:x?=?dict1['y']except?LookupError:print('查詢錯誤')except?KeyError:print('鍵錯誤')else:print(x)????Out[7]:????查詢錯誤????In[8]:????#?調換LookupError和KeyError處理代碼塊的順序dict2={'a':?1,?'b':?2,?'v':?22}#?嘗試索引賦值dict中不存在的值try:x?=?dict2['y']except?KeyError:print('鍵錯誤')except?LookupError:print('查詢錯誤')else:print(x)????Out[8]:????鍵錯誤?

    代碼清單⑥展示的try-except-else語句嘗試查詢不在dict中的鍵值對,從而引發了異常。這一異常準確地說應屬于KeyError,但由于KeyError是LookupError的子類,且在代碼清單⑥中將LookupError置于KeyError之前,因此程序優先執行該except代碼塊。所以,使用多個except代碼塊時,必須堅持對其規范排序,要從最具針對性的異常到最通用的異常。

    除自然發生的異常外,Python中的raise語句可用于故意引發異常。使用該語句引發異常時,只需在raise后輸入異常名即可,如代碼清單⑦所示。

    • 代碼清單⑦ raise語句

    In[9]:????#?嘗試引發IndexErrortry:raise?IndexErrorexcept?KeyError:print?('in?KeyError?except')except?IndexError:print('in?IndexError?except')else:print('no?exception')???Out[9]:????in?IndexError?except

    本文摘編自《Python3智能數據分析快速入門》,經出版方授權發布。

    延伸閱讀《Python3智能數據分析快速入門》

    點擊上圖了解及購買

    轉載請聯系微信:DoctorData

    推薦語:本書假設你有一定的數據分析基礎,但是沒有Python和AI基礎,為了幫助你快速掌握智能數據分析需要的技術和方法,書中有針對性地講解了Python和AI中必須要掌握的知識點,內容由淺入深,循序漸進。從環境配置、基本語法、基礎函數到第三方庫的安裝與使用,對各個操作步驟、函數、工具、代碼示例等的講解非常詳盡,確保所有滿足條件的讀者都能快速入門。

    開學季滿減福利進行中

    長按小程序碼發現更多好書

    「大數據」內容合伙人之「鑒書小分隊」上線啦!

    最近,你都在讀什么書?有哪些心得體會想要跟大家分享?

    數據叔最近搞了個大事——聯合優質圖書出版商機械工業出版社華章公司發起鑒書活動。

    簡單說就是:你可以免費讀新書,你可以免費讀新書的同時,順手碼一篇讀書筆記就行。詳情請在大數據公眾號后臺對話框回復合伙人查看。

    有話要說?

    Q:?關于Python條件語句,你還有什么疑問?

    歡迎留言與大家分享

    猜你想看?

    • 學霸們在假期里“偷著學”,看的是這些書

    • 從圖靈機、圖靈測試到人工智能:什么決定了AI能否取代人類?

    • 從概念到應用,終于有人把數據挖掘講明白了

    • 中國AI人才缺口500萬,10本硬核技術書帶你上車

    更多精彩?

    在公眾號對話框輸入以下關鍵詞

    查看更多優質內容!

    PPT?|?報告?|?讀書?|?書單?|?干貨?

    大數據?|?揭秘?|?Python?|?可視化

    AI?|?人工智能?|?5G?|?區塊鏈

    機器學習?|?深度學習?|?神經網絡

    合伙人?|?1024?|?段子?|?數學?|?高考

    據統計,99%的大咖都完成了這個神操作

    ?

    覺得不錯,請把這篇文章分享給你的朋友

    轉載 / 投稿請聯系:baiyu@hzbook.com

    更多精彩,請在后臺點擊“歷史文章”查看

    點擊閱讀原文,了解更多

    總結

    以上是生活随笔為你收集整理的包教包会,7段代码带你玩转Python条件语句的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。