Python:核心知識點整理大全9-筆記

目錄

?編輯

5.2.4 比較數字

5.2.5 檢查多個條件

1. 使用and檢查多個條件

2. 使用or檢查多個條件

5.2.6 檢查特定值是否包含在列表中

5.2.7 檢查特定值是否不包含在列表中

banned_users.py

5.2.8 布爾表達式

5.3 if 語句

5.3.1 簡單的 if 語句

5.3.2 if-else 語句

5.3.3 if-elif-else 結構

5.3.4 使用多個 elif 代碼塊

5.3.5 省略 else 代碼塊

5.3.6 測試多個條件


5.2.4 比較數字

檢查數值非常簡單,例如,下面的代碼檢查一個人是否是18歲:

>>> age = 18
>>> age == 18
True 

你還可以檢查兩個數字是否不等,例如,下面的代碼在提供的答案不正確時打印一條消息: magic_ number.py

answer = 17
1 if answer != 42:print("That is not the correct answer. Please try again!") 

answer(17)不是42,1處的條件得到滿足,因此縮進的代碼塊得以執行:

That is not the correct answer. Please try again!

條件語句中可包含各種數學比較,如小于、小于等于、大于、大于等于

>>> age = 19
>>> age < 21
True
>>> age <= 21
True
>>> age > 21
False
>>> age >= 21
False 

在if語句中可使用各種數學比較,這讓你能夠直接檢查關心的條件。

5.2.5 檢查多個條件

你可能想同時檢查多個條件,例如,有時候你需要在兩個條件都為True時才執行相應的操作, 而有時候你只要求一個條件為True時就執行相應的操作。在這些情況下,關鍵字and和or可助你 一臂之力。

1. 使用and檢查多個條件

要檢查是否兩個條件都為True,可使用關鍵字and將兩個條件測試合而為一;如果每個測試都通過了,整個表達式就為True;如果至少有一個測試沒有通過,整個表達式就為False。 例如,要檢查是否兩個人都不小于21歲,可使用下面的測試:

1 >>> age_0 = 22
>>> age_1 = 18
2 >>> age_0 >= 21 and age_1 >= 21
False
3 >>> age_1 = 22
>>> age_0 >= 21 and age_1 >= 21
True

在1處,我們定義了兩個用于存儲年齡的變量:age_0和age_1。在2處,我們檢查這兩個變 量是否都大于或等于21;左邊的測試通過了,但右邊的測試沒有通過,因此整個條件表達式的結 果為False。在3處,我們將age_1改為22,這樣age_1的值大于21,因此兩個測試都通過了,導致 整個條件表達式的結果為True。

為改善可讀性,可將每個測試都分別放在一對括

號內,但并非必須這樣做。如果你使用括號, 測試將類似于下面這樣:

(age_0 >= 21) and (age_1 >= 21)

2. 使用or檢查多個條件

關鍵字or也能夠讓你檢查多個條件,但只要至少有一個條件滿足,就能通過整個測試。僅當 兩個測試都沒有通過時,使用or的表達式才為False。

下面再次檢查兩個人的年齡,但檢查的條件是至少有一個人的年齡不小于21歲:

?
1 >>> age_0 = 22
>>> age_1 = 18
2 >>> age_0 >= 21 or age_1 >= 21
True
3 >>> age_0 = 18
>>> age_0 >= 21 or age_1 >= 21
False ?

同樣,我們首先定義了兩個用于存儲年齡的變量(見1)。由于2處對age_0的測試通過了, 因此整個表達式的結果為True。接下來,我們將age_0減小為18;在3處的測試中,兩個測試都沒 有通過,因此整個表達式的結果為False。

5.2.6 檢查特定值是否包含在列表中

有時候,執行操作前必須檢查列表是否包含特定的值。例如,結束用戶的注冊過程前,可能 需要檢查他提供的用戶名是否已包含在用戶名列表中。在地圖程序中,可能需要檢查用戶提交的 位置是否包含在已知位置列表中。

要判斷特定的值是否已包含在列表中,可使用關鍵字in。來看你可能為比薩店編寫的一些代 碼;這些代碼首先創建一個列表,其中包含用戶點的比薩配料,然后檢查特定的配料是否包含在該列表中。

>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
1 >>> 'mushrooms' in requested_toppingsTrue
2 >>> 'pepperoni' in requested_toppings
False

在1處和2處,關鍵字in讓Python檢查列表requested_toppings是否包含'mushrooms'和 'pepperoni'。這種技術很有用,它讓你能夠在創建一個列表后,輕松地檢查其中是否包含特定 的值。

5.2.7 檢查特定值是否不包含在列表中

還有些時候,確定特定的值未包含在列表中很重要;在這種情況下,可使用關鍵字not in。 例如,如果有一個列表,其中包含被禁止在論壇上發表評論的用戶,就可在允許用戶提交評論前 檢查他是否被禁言:

banned_users.py

banned_users = ['andrew', 'carolina', 'david']
user = 'marie'
1 if user not in banned_users:print(user.title() + ", you can post a response if you wish.")

1 處的代碼行明白易懂:如果user的值未包含在列表banned_users中,Python將返回True, 進而執行縮進的代碼行。 用戶'marie'未包含在列表banned_users中,因此她將看到一條邀請她發表評論的消息:

Marie, you can post a response if you wish. 

5.2.8 布爾表達式

隨著你對編程的了解越來越深入,將遇到術語布爾表達式,它不過是條件測試的別名。與條 件表達式一樣,布爾表達式的結果要么為True,要么為False。

布爾值通常用于記錄條件,如游戲是否正在運行,或用戶是否可以編輯網站的特定內容:

game_active = True
can_edit = False 

在跟蹤程序狀態或程序中重要的條件方面,布爾值提供了一種高效的方式。

5.3 if 語句

理解條件測試后,就可以開始編寫if語句了。if語句有很多種,選擇使用哪種取決于要測試 的條件數。前面討論條件測試時,列舉了多個if語句示例,下面更深入地討論這個主題。

5.3.1 簡單的 if 語句

最簡單的if語句只有一個測試和一個操作:

if conditional_test:do something 

在第1行中,可包含任何條件測試,而在緊跟在測試后面的縮進代碼塊中,可執行任何操作。 如果條件測試的結果為True,Python就會執行緊跟在if語句后面的代碼;否則Python將忽略這些 代碼。

假設有一個表示某人年齡的變量,而你想知道這個人是否夠投票的年齡,可使用如下代碼: voting.py

age = 19
1 if age >= 18:
2    print("You are old enough to vote!")

在1處,Python檢查變量age的值是否大于或等于18;答案是肯定的,因此Python執行?處縮 進的print語句:

You are old enough to vote! 

在if語句中,縮進的作用與for循環中相同。如果測試通過了,將執行if語句后面所有縮進 的代碼行,否則將忽略它們。

在緊跟在if語句后面的代碼塊中,可根據需要包含任意數量的代碼行。下面在一個人夠投票 的年齡時再打印一行輸出,問他是否登記了:

age = 19
if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")

條件測試通過了,而兩條print語句都縮進了,因此它們都將執行:

You are old enough to vote!
Have you registered to vote yet? 

如果age的值小于18,這個程序將不會有任何輸出。

5.3.2 if-else 語句

經常需要在條件測試通過了時執行一個操作,并在沒有通過時執行另一個操作;在這種情況 下,可使用Python提供的if-else語句。if-else語句塊類似于簡單的if語句,但其中的else語句 讓你能夠指定條件測試未通過時要執行的操作。

下面的代碼在一個人夠投票的年齡時顯示與前面相同的消息,同時在這個人不夠投票的年齡 時也顯示一條消息:

age = 17
1 if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")
2 else:print("Sorry, you are too young to vote.")print("Please register to vote as soon as you turn 18!")

如果1處的條件測試通過了,就執行第一個縮進的print語句塊;如果測試結果為False,就 執行2處的else代碼塊。這次age小于18,條件測試未通過,因此執行else代碼塊中的代碼:

Sorry, you are too young to vote.
Please register to vote as soon as you turn 18!

上述代碼之所以可行,是因為只存在兩種情形:要么夠投票的年齡,要么不夠。if-else結 構非常適合用于要讓Python執行兩種操作之一的情形。在這種簡單的if-else結構中,總是會執行 兩個操作中的一個。

5.3.3 if-elif-else 結構

經常需要檢查超過兩個的情形,為此可使用Python提供的if-elif-else結構。Python只執行 if-elif-else結構中的一個代碼塊,它依次檢查每個條件測試,直到遇到通過了的條件測試。測 試通過后,Python將執行緊跟在它后面的代碼,并跳過余下的測試。

在現實世界中,很多情況下需要考慮的情形都超過兩個。例如,來看一個根據年齡段收費的 游樂場:

? 4歲以下免費;

? 4~18歲收費5美元;

? 18歲(含)以上收費10美元。

如果只使用一條if語句,如何確定門票價格呢?下面的代碼確定一個人所屬的年齡段,并打 印一條包含門票價格的消息:

amusement_park.py

age = 12
1 if age < 4:print("Your admission cost is $0.")
2 elif age < 18:print("Your admission cost is $5.")
3 else:print("Your admission cost is $10.")

1 處的if測試檢查一個人是否不滿4歲,如果是這樣,Python就打印一條合適的消息,并跳 過余下的測試。2 處的elif代碼行其實是另一個if測試,它僅在前面的測試未通過時才會運行。 在這里,我們知道這個人不小于4歲,因為第一個測試未通過。如果這個人未滿18歲,Python將 打印相應的消息,并跳過else代碼塊。如果if測試和elif測試都未通過,Python將運行3 處else 代碼塊中的代碼。? ?

在這個示例中,1處測試的結果為False,因此不執行其代碼塊。然而,第二個測試的結果 為True(12小于18),因此將執行其代碼塊。輸出為一個句子,向用戶指出了門票價格:

只要年齡超過17歲,前兩個測試就都不能通過。在這種情況下,將執行else代碼塊,指出門 票價格為10美元。

為讓代碼更簡潔,可不在if-elif-else代碼塊中打印門票價格,而只在其中設置門票價格, 并在它后面添加一條簡單的print語句:

age = 12
if age < 4:
1 price = 0
elif age < 18:
2 price = 5
else:
3 price = 10
4 print("Your admission cost is $" + str(price) + ".")

1 處、2 處和3 處的代碼行像前一個示例那樣,根據人的年齡設置變量price的值。在 if-elif-else結構中設置price的值后,一條未縮進的print語句4 會根據這個變量的值打印一條 消息,指出門票的價格。

這些代碼的輸出與前一個示例相同,但if-elif-else結構的作用更小,它只確定門票價格, 而不是在確定門票價格的同時打印一條消息。除效率更高外,這些修訂后的代碼還更容易修改: 要調整輸出消息的內容,只需修改一條而不是三條print語句。

5.3.4 使用多個 elif 代碼塊

可根據需要使用任意數量的elif代碼塊,例如,假設前述游樂場要給老年人打折,可再添加 一個條件測試,判斷顧客是否符合打折條件。下面假設對于65歲(含)以上的老人,可以半價(即 5美元)購買門票:

age = 12
if age < 4:price = 0
elif age < 18:price = 5
1 elif age < 65:price = 10
2 else:price = 5
print("Your admission cost is $" + str(price) + ".") 

這些代碼大都未變。第二個elif代碼塊(見1)通過檢查確定年齡不到65歲后,才將門票價 格設置為全票價格——10美元。請注意,在else代碼塊(見2)中,必須將所賦的值改為5,因 為僅當年齡超過65(含)時,才會執行這個代碼塊。

5.3.5 省略 else 代碼塊

Python并不要求if-elif結構后面必須有else代碼塊。在有些情況下,else代碼塊很有用;而 在其他一些情況下,使用一條elif語句來處理特定的情形更清晰:

age = 12
if age < 4:price = 0
elif age < 18:price = 5
elif age < 65:price = 10
1 elif age >= 65:price = 5
print("Your admission cost is $" + str(price) + ".")

1 處的elif代碼塊在顧客的年齡超過65(含)時,將價格設置為5美元,這比使用else代碼 塊更清晰些。經過這樣的修改后,每個代碼塊都僅在通過了相應的測試時才會執行。 else是一條包羅萬象的語句,只要不滿足任何if或elif中的條件測試,其中的代碼就會執行, 這可能會引入無效甚至惡意的數據。如果知道最終要測試的條件,應考慮使用一個elif代碼塊來 代替else代碼塊。這樣,你就可以肯定,僅當滿足相應的條件時,你的代碼才會執行。

5.3.6 測試多個條件

????????if-elif-else結構功能強大,但僅適合用于只有一個條件滿足的情況:遇到通過了的測試后, Python就跳過余下的測試。這種行為很好,效率很高,讓你能夠測試一個特定的條件。

????????然而,有時候必須檢查你關心的所有條件。在這種情況下,應使用一系列不包含elif和else 代碼塊的簡單if語句。在可能有多個條件為True,且你需要在每個條件為True時都采取相應措施 時,適合使用這種方法。

下面再來看前面的比薩店示例。如果顧客點了兩種配料,就需要確保在其比薩中包含這些配料: toppings.py

1 requested_toppings = ['mushrooms', 'extra cheese']
2 if 'mushrooms' in requested_toppings:print("Adding mushrooms.")
3 if 'pepperoni' in requested_toppings:print("Adding pepperoni.")
4 if 'extra cheese' in requested_toppings:print("Adding extra cheese.")
print("\nFinished making your pizza!")

我們首先創建了一個列表,其中包含顧客點的配料(見1)。2 處的if語句檢查顧客是否點 了配料蘑菇('mushrooms'),如果點了,就打印一條確認消息。3 處檢查配料辣香腸('pepperoni') 的代碼也是一個簡單的if語句,而不是elif或else語句;因此不管前一個測試是否通過,都將進 行這個測試。4處的代碼檢查顧客是否要求多加芝士('extra cheese');不管前兩個測試的結果 如何,都會執行這些代碼。每當這個程序運行時,都會進行這三個獨立的測試。

在這個示例中,會檢查每個條件,因此將在比薩中添加蘑菇并多加芝士:

Adding mushrooms.
Adding extra cheese.
Finished making your pizza!

如果像下面這樣轉而使用if-elif-else結構,代碼將不能正確地運行,因為有一個測試通過 后,就會跳過余下的測試:

requested_toppings = ['mushrooms', 'extra cheese']
if 'mushrooms' in requested_toppings:print("Adding mushrooms.")
elif 'pepperoni' in requested_toppings:print("Adding pepperoni.")
elif 'extra cheese' in requested_toppings:print("Adding extra cheese.")
print("\nFinished making your pizza!")

第一個測試檢查列表中是否包含'mushrooms',它通過了,因此將在比薩中添加蘑菇。然而, Python將跳過if-elif-else結構中余下的測試,不再檢查列表中是否包含'extra cheese'和 'pepperoni'。其結果是,將添加顧客點的第一種配料,但不會添加其他的配料:

Adding mushrooms.
Finished making your pizza!

總之,如果你只想執行一個代碼塊,就使用if-elif-else結構;如果要運行多個代碼塊,就 使用一系列獨立的if語句。


Python:核心知識點整理大全1-筆記-CSDN博客

Python:核心知識點整理大全2-筆記-CSDN博客

Python:核心知識點整理大全3-筆記-CSDN博客

Python:核心知識點整理大全4-筆記-CSDN博客

Python:核心知識點整理大全5-筆記-CSDN博客

Python:核心知識點整理大全6-筆記-CSDN博客

Python:核心知識點整理大全7-筆記-CSDN博客

Python:核心知識點整理大全8-筆記-CSDN博客

往期快速傳送門👆(在文章最后):


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209451.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209451.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209451.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java中sleep() 和 wait() 有什么區別?

Java中sleep() 和 wait() 有什么區別&#xff1f; sleep() 和 wait() 是兩個在 Java 中用于線程控制的方法&#xff0c;它們有一些重要的區別&#xff1a; 關聯對象&#xff1a; sleep() 是 Thread 類的靜態方法&#xff0c;它讓當前線程休眠指定的時間&#xff0c;不釋放對象…

YOLOv8改進 | 2023 | RCS-OSA替換C2f實現暴力漲點(減少通道的空間對象注意力機制)

一、本文介紹 本文給大家帶來的改進機制是RCS-YOLO提出的RCS-OSA模塊&#xff0c;其全稱是"Reduced Channel Spatial Object Attention"&#xff0c;意即"減少通道的空間對象注意力"。這個模塊的主要功能是通過減少特征圖的通道數量&#xff0c;同時關注空…

Android Studio APK打包指定包名

在最近寫的一個案列中嘗試用最新版的Android studio對項目進行打包測試&#xff0c;想要指定打包的包名這樣便于區分的時候發現以前的許多方法都過時了&#xff0c;查了很多資料才弄明白each被拋棄了。本教程建議先看第三步。 目錄 一、配置根目錄下gradle.build 二、通過bui…

Billu_b0x

信息收集 #正常進行信息收集就好Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-18 22:07 CST Nmap scan report for 192.168.182.142 (192.168.182.142) Host is up (0.00073s latency).PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-cookie-flags:…

VSC改造MD編輯器及圖床方案分享

VSC改造MD編輯器及圖床方案分享 用了那么多md編輯器&#xff0c;到頭來還是覺得VSC最好用。這次就來分享一下我的blog文件編輯流吧。 這篇文章包括&#xff1a;VSC下md功能擴展插件推薦、圖床方案、blog文章管理方案 VSC插件 Markdown All in One Markdown Image - 粘粘圖片…

【電子通識】為什么電阻都是2.2、3.3、4.7、5.1這樣的小數,而不是整數?

剛開始接觸電路設計可能會對市面上已經有的電阻值如&#xff1a;2.2Ω、4.7Ω、5.1Ω、22Ω、47Ω、51Ω&#xff0c;通常都不是整數覺得非常困惑&#xff0c;所以查閱了一些資料&#xff0c;總結如下&#xff1a; 電阻是使用指數分布來設計生產的&#xff0c;即遵循國際電工委…

【CSP】202303-2_墾田計劃Python實現

文章目錄 [toc]試題編號試題名稱時間限制內存限制問題描述輸入格式輸出格式樣例輸入1樣例輸出1樣例解釋樣例輸入2樣例輸出2樣例解釋子任務Python實現 試題編號 202303-2 試題名稱 墾田計劃 時間限制 1.0s 內存限制 512.0MB 問題描述 頓頓總共選中了 n n n塊區域準備開墾田地&a…

基于STM32 + DMA介紹,應用和步驟詳解(ADC多通道)

前言 本篇博客主要學習了解DMA的工作原理和部分寄存器解析&#xff0c;針對ADC多通道來對代碼部分&#xff0c;應用部分作詳細講解&#xff0c;掌握代碼編程原理。本篇博客大部分是自己收集和整理&#xff0c;如有侵權請聯系我刪除。 本次博客開發板使用的是正點原子精英版&am…

23種策略模式之策略模式

文章目錄 前言優缺點使用場景角色定義UML模擬示例小結 前言 在軟件開發中&#xff0c;設計模式是為了解決常見問題而提供的一套可重用的解決方案。策略模式&#xff08;Strategy Pattern&#xff09;是其中一種常見的設計模式&#xff0c;它屬于行為型模式。該模式的核心思想是…

Java程序設計實驗6 | 集合類

*本文是博主對Java各種實驗的再整理與詳解&#xff0c;除了代碼部分和解析部分&#xff0c;一些題目還增加了拓展部分&#xff08;?&#xff09;。拓展部分不是實驗報告中原有的內容&#xff0c;而是博主本人自己的補充&#xff0c;以方便大家額外學習、參考。 &#xff08;解…

基于ssm的大型商場會員管理系統論文

摘 要 進入信息時代以來&#xff0c;很多數據都需要配套軟件協助處理&#xff0c;這樣可以解決傳統方式帶來的管理困擾。比如耗時長&#xff0c;成本高&#xff0c;維護數據困難&#xff0c;數據易丟失等缺點。本次使用數據庫工具MySQL和編程框架SSM開發的大型商場會員管理系統…

【漏洞復現】FLIR AX8紅外線熱成像儀命令執行漏洞

漏洞描述 eledyne FLIR 設計、開發、制造以及強大的傳感和意識技術。自透射熱圖像、可見光圖像、可見頻率分析、來自測量和診斷的先進威脅測量系統以及日常生活的創新解決方案。 Teledyne FLIR 提供多種產品用于政府、國防、工業和商業市場。我們的產品,緊急救援人員,軍事人…

插入排序與希爾排序(C語言實現)

1.插入排序 由上面的動圖可以知道插入排序的邏輯就是從第一個元素開始往后遍歷&#xff0c;如果找到比前一個元素小的&#xff08;或者大的&#xff09;就往前排&#xff0c;所以插入排序的每一次遍歷都會保證前面的數據是有序的&#xff0c;接下類用代碼進行講解。 我們這里傳…

bash中通過變量中的內容獲取對應的關聯數組

bash中通過變量中的內容獲取對應的關聯數組 Bash declare 手冊&#xff1a; https://phoenixnap.com/kb/bash-declare 實際問題&#xff1a; 在 bash 中創建了多個關聯數組&#xff0c;需要根據輸入的值&#xff0c;獲取不同的關聯數組。 可以使用 if 進行多次判斷&#xff…

智能優化算法應用:基于浣熊算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于浣熊算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于浣熊算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.浣熊算法4.實驗參數設定5.算法結果6.參考文獻7.MATLAB…

解決HTTP錯誤500.19 - internal server error -內部服務器錯誤的終極指南

在開發和維護網絡應用程序時&#xff0c;難免會遇到各種HTTP錯誤代碼。其中&#xff0c;HTTP錯誤500.19 - 內部服務器錯誤可謂是最令人頭痛的問題之一。當你的應用程序遇到這個錯誤時&#xff0c;它似乎就像一道墻壁&#xff0c;擋住了你前進的道路。但別擔心&#xff0c;本篇技…

Git全局設置命令---設置提交人姓名

介紹 使用git命令設置提交人姓名 命令 git config --global user.name "超音速"

react-photo-view 的介紹、安裝、使用。

目錄 基本介紹 安裝 使用 基本介紹 react-photo-view 是一個基于 React 的圖片查看器組件&#xff0c;用于在網頁上展示和瀏覽圖片。該組件提供了用戶友好的界面和交互&#xff0c;可以輕松地在應用程序中集成并使用。 支持觸摸手勢&#xff0c;拖動/平移/物理效果滑動…

修改移遠提供的GobiNet、quectel-CM源碼,使其支持有方N720 4G模塊

最近在研究imx6ull linux下4G模塊驅動的移植&#xff0c;參考的移遠ec20的移植方法&#xff0c;添加了GobiNet驅動&#xff0c;編譯了quectel-CM工具&#xff0c;并且可以正常撥號&#xff0c;分配到ip&#xff0c;如下&#xff1a; ping外網也沒有壓力&#xff0c;如下…

軟件工程 考試重點

結構化分析 考慮數據和處理的需求分析方法&#xff0c;稱為結構分析方法&#xff08;SA&#xff09; 結構化分析基于 分解、抽象 的基本思想 分解&#xff1a;對于復雜的系統&#xff0c;為將復雜度降低到可以掌握的程度&#xff0c;可以把大問題分解為若干個小問題&#xf…