【python基礎(四)】if語句詳解

文章目錄

  • 一. 一個簡單示例
  • 二. 條件測試
    • 1. 檢查多個條件
      • 1.1. 使用and關聯多個條件
      • 1.2. 使用or檢查多個條件
      • 1.3. in的判斷
    • 2. 布爾表達式
  • 三. if語句
    • 1. 簡單的if語句
    • 2. if-else語句
    • 3. if-elif-else結構
    • 4. 使用多個elif代碼塊
    • 5. 省略else代碼塊
  • 四. 使用if語句處理列表
    • 1. 檢查特殊元素
    • 2. 確定列表不是空的

  1. 如何編寫結果要么為True要么為False的條件測試;
  2. 如何編寫簡單的if語句、if-else語句和if-elif-else結構,并且在程序中使用這些結構來測試特定的條件,以確定這些條件是否滿足;
  3. 如何在利用高效的for循環的同時,以不同于其他元素的方式對特定的列表元素進行處理。

一. 一個簡單示例

if __name__ == '__main__':cars = ['audi', 'bmw', 'subaru', 'toyota']for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())

?

二. 條件測試

每條if語句的核心都是一個值為True或False的表達式,這種表達式稱為條件測試。
如果條件測試的值為True,Python就執行緊跟在if語句后面的代碼;如果為False,Python就忽略這些代碼。

1. 檢查多個條件

1.1. 使用and關聯多個條件

要檢查是否兩個條件都為True,可使用關鍵字and將兩個條件測試合而為一。
例如,要檢查是否兩個人都不小于21歲

? >>> age_0 = 22>>> age_1 = 18
? >>> age_0 >= 21 and age_1 >= 21False

為改善可讀性,可將每個測試分別放在一對圓括號內,但并非必須這樣做。

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

?

1.2. 使用or檢查多個條件

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

至少一個人的年齡不小于21歲:

? >>> age_0 = 22>>> age_1 = 18
? >>> age_0 >= 21 or age_1 >= 21True

?

1.3. in的判斷

要判斷特定的值是否已包含在列表中,可使用關鍵字in

創建一個列表,其中包含用戶點的比薩配料,然后檢查特定的配料是否包含在該列表中。

>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'onions' in requested_toppings
True

使用關鍵字not in,來判斷值不包含在列表中。

?

2. 布爾表達式

與條件表達式一樣,布爾表達式的結果要么為True,要么為False,首字母不能小寫。

game_active = True
can_edit = False

?

三. if語句

1. 簡單的if語句

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

if conditional_test:dosomething
age = 19
? if age >= 18:
?     print("You are old enough to vote!")

在if語句中,縮進的作用與在for循環中相同。

?

2. if-else語句

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

?

3. if-elif-else結構

Python只執行if-elif-else結構中的一個代碼塊。它依次檢查每個條件測試,直到遇到通過了的條件測試。測試通過后,Python將執行緊跟在它后面的代碼,并跳過余下的測試

一個根據年齡段收費的游樂場:
▲ 4歲以下免費;▲ 4~18歲收費25美元;▲ 18歲(含)以上收費40美元。

  age = 12? if age < 4:print("Your admission cost is $0.")
? elif age < 18:print("Your admission cost is $25.")
? else:print("Your admission cost is $40.")

?處的if測試檢查一個人是否不滿4歲。如果是,Python就打印一條合適的消息,并跳過余下測試。?處的elif代碼行其實是另一個if測試,僅在前面的測試未通過時才會運行。

?
優化
為了讓代碼更簡潔,可不在if-elif-else代碼塊中打印門票價格,而只在其中設置門票價格,并在它后面添加一個簡單的函數調用print():

  age = 12if age < 4:
?     price = 0elif age < 18:
?     price = 25else:
?     price = 40? print(f"Your admission cost is ${price}.")

?

4. 使用多個elif代碼塊

下面假設增加一個條件測試:對于65歲(含)以上的老人,可半價(即20美元)購買門票:

  age = 12if age < 4:price = 0elif age < 18:price = 25
? elif age < 65:price = 40
? else:price = 20print(f"Your admission cost is ${price}.")

?

5. 省略else代碼塊

Python并不要求if-elif結構后面必須有else代碼塊。使用一條elif語句來處理特定的情形更清晰:

  age = 12if age < 4:price = 0elif age < 18:price = 25elif age < 65:price = 40
? elif age >= 65:price = 20print(f"Your admission cost is ${price}.")

else是:只要不滿足任何if或elif中的條件測試,其中的代碼就會執行。這可能引入無效甚至惡意的數據。如果知道最終要測試的條件,應考慮使用一個elif代碼塊來代替else代碼塊

?

四. 使用if語句處理列表

1. 檢查特殊元素

如果要添加青椒,則說明已經用完了

  requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']for requested_topping in requested_toppings:
?     if requested_topping == 'green peppers':print("Sorry, we are out of green peppers right now.")
?     else:print(f"Adding {requested_topping}.")print("\nFinished making your pizza!")

?

2. 確定列表不是空的

如果顧客要在比薩中添加炸薯條,該怎么辦呢?可使用列表和if語句來確定能否滿足顧客的要求。

? available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']? requested_toppings = ['mushrooms', 'french fries', 'extra cheese']? for requested_topping in requested_toppings:
?     if requested_topping in available_toppings:print(f"Adding {requested_topping}.")
?     else:print(f"Sorry, we don't have {requested_topping}.")print("\nFinished making your pizza!")

?
參考:《python編程:從入門到實踐(第二版)》

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

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

相關文章

2023-11-23 LeetCode每日一題(HTML 實體解析器)

2023-11-23每日一題 一、題目編號 1410. HTML 實體解析器二、題目鏈接 點擊跳轉到題目位置 三、題目描述 「HTML 實體解析器」 是一種特殊的解析器&#xff0c;它將 HTML 代碼作為輸入&#xff0c;并用字符本身替換掉所有這些特殊的字符實體。 HTML 里這些特殊字符和它們…

Endnote軟件添加期刊引用格式

在下述網址中&#xff0c;找到你想要添加的期刊&#xff0c;下載引用格式文件&#xff08;后綴為.ens格式&#xff09; https://endnote.com/downloads/styles/?wpv_post_searchInformationfusion&wpv_aux_current_post_id12829&wpv_view_count12764-TCPID12829 下載…

SQLY優化

insert優化 1.批量插入 手動事務提交 主鍵順序插入&#xff0c;主鍵順序插入性能高于亂序插入 2.大批量插入數據 如果一次性需要插入大批量數據&#xff0c;使用Insert語句插入性能較低&#xff0c;此時可以使用MYSQL數據庫提供的load指令進行插入 主鍵優化 主鍵設計原則 …

Java實現王者榮耀小游戲

主要功能 鍵盤W,A,S,D鍵&#xff1a;控制玩家上下左右移動。按鈕一&#xff1a;控制英雄發射一個矩形攻擊紅方小兵。按鈕控制英雄發射魅惑技能&#xff0c;傷害小兵并讓小兵停止移動。技能三&#xff1a;攻擊多個敵人并讓小兵停止移動。普攻&#xff1a;對小兵造成基礎傷害。小…

vue3 終端實現 (vue3+xterm+websocket)

目錄 一、xterm介紹 二、效果展示 三、vue文件實現代碼 一、xterm介紹 xterm是一個使用

【C++初階】STL詳解(七)Stack與Queue的模擬實現

本專欄內容為&#xff1a;C學習專欄&#xff0c;分為初階和進階兩部分。 通過本專欄的深入學習&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn個人主頁&#xff1a;小小unicorn ?專欄分類&#xff1a;C &#x1f69a;代碼倉庫&#xff1a;小小unicorn的代碼倉庫&…

力扣labuladong一刷day17天前綴和數組

力扣labuladong一刷day17天前綴和數組 一、303. 區域和檢索 - 數組不可變 題目鏈接&#xff1a;https://leetcode.cn/problems/range-sum-query-immutable/ 思路&#xff1a;本題即為讓寫一個類用于計算指定區間內的數字和&#xff0c;但如果直接采用for循環的方式&#xff0…

Unity調用dll踩坑記

請用寫一段代碼&#xff0c;讓unity無聲無息的崩潰。 你說這怕是有點難哦&#xff0c;誰會這么不幸呢&#xff1f;不幸的是&#xff0c;我幸運的成為了那個不幸的人。 unity里面調用dll的方式是使用 DllImport &#xff0c;比如有一個 Hello.dll&#xff0c;里面有一個 char* …

圖片如何去除水印?試試這三種去水印方法!

從事自媒體行業的小伙伴們&#xff0c;你們是否經常為文章配圖而煩惱呢&#xff1f;下載的圖片大部分帶有各種各樣的水印或者多余元素&#xff0c;讓人感到困擾。今天&#xff0c;我要分享三個去水印的妙招&#xff0c;這是新媒體人必備的圖片處理技能&#xff0c;快來一起學起…

【MATLAB源碼-第87期】基于matlab的Q-learning算法柵格地圖路徑規劃,自主選擇起始點和障礙物。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 Q-learning是一種無模型的強化學習算法&#xff0c;適用于有限的馬爾可夫決策過程&#xff08;MDP&#xff09;。它的核心是學習一個動作價值函數&#xff08;action-value function&#xff09;&#xff0c;即Q函數&#xf…

面試官:【js多維數組扁平化去重并排序】

文章目錄 前言方法一方法二方法三方法四總結后言 前言 hello world歡迎來到前端的新世界 &#x1f61c;當前文章系列專欄&#xff1a;JavaScript &#x1f431;?&#x1f453;博主在前端領域還有很多知識和技術需要掌握&#xff0c;正在不斷努力填補技術短板。(如果出現錯誤&a…

【騰訊云云上實驗室-向量數據庫】Tencent Cloud VectorDB在實戰項目中替換Milvus測試

為什么嘗試使用Tencent Cloud VectorDB替換Milvus向量庫&#xff1f; 亮點&#xff1a;Tencent Cloud VectorDB支持Embedding&#xff0c;免去自己搭建模型的負擔&#xff08;搭建一個生產環境的模型實在耗費精力和體力&#xff09;。 騰訊云向量數據庫是什么&#xff1f; 騰…

rsync配置和守護進程實踐

目錄 一、rsync概念 1.rsync簡介 2.rsync特點 3、增量和全局傳輸 二、Rsync工作方式 1.準備好rsync備份服務器 2.本地的數據傳輸模式 3.遠程的數據傳輸模式 4.rsync數據推拉模式 三、實踐 1.準備三臺虛擬機 2.都安裝rsync服務 3.拉取遠程文件 3.推送文件 4.rsyn…

Oracle用戶(User)和表空間(Tablespace)

3. 用戶和表空間 3.1. 用戶 1)概念 Oracle數據庫中,用戶(User)是訪問數據庫的途徑和認證方式,同時,用戶也是數據庫對象的邏輯集合。我們通過數據庫用戶和密碼來登錄數據庫,然后,可以在該用戶下創建和操作數據庫對象。 2)創建和配置 創建Oracle用戶,需要具備創建…

python系統編程

文章目錄 系統編程系統工具概述sys模塊os模塊 腳本運行上下文當前工作路徑命令行參數shell環境變量標準流 文件和目錄工具文件工具目錄工具 并行系統工具進程分支線程 系統編程 系統工具 概述 python系統模塊: 模塊名作用*sys負責導出與怕以后呢解釋器本身相關的組件*os包含…

Django DRF序列化器serializer

以下案例由淺到深&#xff0c;逐步深入&#xff0c;通過實例介紹了序列化器的使用方法&#xff0c;和其中遇到的常見問題的解決。 一、序列化器serializers.Serializer 1、urls.py urlpatterns [path("api/<str:version>/depart/",views.DepartView.as_vie…

緩存雪崩、擊穿、穿透及解決方案_保證緩存和數據庫一致性

文章目錄 緩存雪崩、擊穿、穿透1.緩存雪崩造成緩存雪崩解決緩存雪崩 2. 緩存擊穿造成緩存擊穿解決緩存擊穿 3.緩存穿透造成緩存穿透解決緩存穿透 更新數據時&#xff0c;如何保證數據庫和緩存的一致性&#xff1f;1. 先更新數據庫&#xff1f;先更新緩存&#xff1f;解決方案 2…

【問題解決】RuntimeError: apex.optimizers.FusedSGD requires cuda extension 問題解決

在使用 apex 庫時&#xff0c;按照官方的方式安裝后&#xff0c;雖然安裝成功&#xff0c;但調用的時候會報錯如下&#xff0c;也就是說其實沒有成功安裝可調用 cuda 的 apex&#xff1a; RuntimeError: apex.optimizers.FusedSGD requires cuda extension我找了很多解決方式&…

【藍橋杯省賽真題46】Scratch魔術表演 藍橋杯scratch圖形化編程 中小學生藍橋杯省賽真題講解

目錄 scratch魔術表演 一、題目要求 編程實現 二、案例分析 1、角色分析

微信小程序bindtap和catchtap的區別?

子元素用bindtap綁定事件后&#xff0c;執行的時候&#xff0c;會冒泡到父元素&#xff08;觸發父親元素上綁定的bindtap事件&#xff09; 如果不想冒泡到父元素&#xff0c;可以用catchtap代替 bindtap事件綁定不會阻止冒泡事件向上冒泡 catchtap事件綁定可以阻止冒泡事件向上…