Python 中字典和 if-else 的選擇

一、為什么要寫這篇文章?

在 Python 編程中,我們經常需要根據不同的條件做不同的事情。比如:

  • 根據用戶等級顯示不同的內容
  • 根據成績給出不同的評價
  • 根據天氣決定穿什么衣服

這時候,我們通常有兩種選擇:

  1. 用 if-else 語句
  2. 用字典

這篇文章就是要告訴你,在什么情況下用哪種方式更好。

二、if-else 是什么?

if-else 就像我們日常生活中的"如果…就…"語句:

# 比如判斷成績等級
score = 85
if score >= 90:print("優秀")
elif score >= 80:print("良好")
elif score >= 60:print("及格")
else:print("不及格")

三、字典是什么?

字典就像我們生活中的"對照表":

# 比如成績等級對照表
grade_dict = {90: "優秀",80: "良好",60: "及格"
}# 使用字典
score = 85
for key in sorted(grade_dict.keys(), reverse=True):if score >= key:print(grade_dict[key])break

四、什么時候用 if-else?

1. 條件之間有依賴關系

# 比如判斷用戶權限
if user.is_admin:  # 先判斷是不是管理員if user.has_permission:  # 再判斷有沒有權限print("可以訪問所有內容")else:print("只能訪問部分內容")
else:print("只能訪問基礎內容")

2. 條件邏輯比較復雜

# 比如判斷是否要帶傘
if is_raining and (is_heavy_rain or is_thunder):print("帶傘")
elif is_cloudy and weather_forecast == "rain":print("帶傘")
else:print("不用帶傘")

3. 條件數量較少

# 比如判斷性別
if gender == "男":print("靚仔")
else:print("靚女")

五、什么時候用字典?

1. 條件數量很多

# 比如處理不同的錯誤碼
error_messages = {404: "頁面未找到",500: "服務器錯誤",403: "沒有權限",401: "未登錄",# ... 更多錯誤碼
}# 使用字典
error_code = 404
print(error_messages.get(error_code, "未知錯誤"))

2. 每個條件對應固定的處理

# 比如處理不同的配置項
config_handlers = {"theme": lambda x: set_theme(x),"language": lambda x: set_language(x),"font_size": lambda x: set_font_size(x)
}# 使用字典
config_name = "theme"
config_value = "dark"
if config_name in config_handlers:config_handlers[config_name](config_value)

3. 需要快速查找

# 比如查找學生成績
student_scores = {"張三": 85,"李四": 92,"王五": 78
}# 使用字典直接查找
print(student_scores.get("張三", "未找到"))

六、實際例子

例子:混合使用兩種方式

def handle_http_status(code):# 先用 if 處理特殊狀態碼if code == 418:return "我是茶壺"  # 彩蛋狀態碼# 用字典處理常規狀態碼status_map = {200: "成功",404: "未找到",500: "服務器錯誤",403: "禁止訪問"}return status_map.get(code, "未知狀態")print(handle_http_status(418))  # 輸出:我是茶壺
print(handle_http_status(404))  # 輸出:未找到

七、如何選擇?

場景推薦方式示例優勢說明
3-5個簡單條件if-else判斷性別代碼直觀易讀
10+個固定映射字典錯誤碼處理查找速度快,易于維護
需要處理異常混合使用先if處理異常再用字典兼顧靈活性和效率
條件可能動態增加字典可配置的菜單選項添加新項無需修改邏輯

八、小貼士

  1. 不要死板:有時候可以混合使用 if-else 和字典
  2. 保持簡單:選擇更容易理解和維護的方式
  3. 考慮擴展:如果以后可能會增加更多條件,用字典會更容易
  4. 注意性能:如果條件很多,用字典會更快

九、總結

  • if-else 適合處理邏輯復雜條件之間有依賴的情況
  • 字典適合處理條件數量多每個條件對應固定處理的情況
  • 選擇哪種方式,主要看代碼是否容易理解和維護

記住:好的代碼不僅要能工作,還要容易理解和維護。選擇合適的方式,可以讓你的代碼更優雅、更高效。

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

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

相關文章

【開源解析】基于HTML5的智能會議室預約系統開發全攻略:從零構建企業級管理平臺

🚀 【開源解析】基于HTML5的智能會議室預約系統開發全攻略:從零構建企業級管理平臺 🌈 個人主頁:創客白澤 - CSDN博客 💡 熱愛不止于代碼,熱情源自每一個靈感閃現的夜晚。愿以開源之火,點亮前行…

中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告(2025)》:我國依舊需要大力注重人工智能人才的培養

你好,我是杰哥。 中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告(2025)》,以下為報告核心看點: 報告首提 “654”體系:揭秘 6大技術趨勢、5 新應用場景、4 力產業模型;成…

Visual Studio 2010-.Net Framework 4.0-DevExpress安裝

最新版的DevExpress已不支持.Net Framework 4.0,需要下載18.1及以下版本。 17.2.5版DevExpress下載: 百度網盤 請輸入提取碼

借助Aspose.HTML控件,在 Python 中將 HTML 轉換為 Markdown

在這個人工智能時代,Markdown因其易用性而備受重視。這種標記語言易于人類和機器理解。此外,與 HTML 和 DOCX 相比,這種格式更有助于法學碩士 (LLM) 理解文檔結構。因此,本指南將介紹如何以 Python 編程方式將HTML轉換為 Markdown…

【2026版】Redis面試題

文章目錄1. Redis為什么這么快?2. Redis的持久化機制是怎樣的?3. Redis 的過期策略是怎么樣的?4. Redis的內存淘汰策略是怎么樣的?5. 什么是熱Key問題,如何解決熱key問題?6. 什么是大Key問題,如…

Python編程進階知識之第四課處理數據(pandas)

目錄 簡介 1. 安裝 Pandas 2.基本數據結構 1.Series (1.)創建Series (2.)Series的屬性 (3.)Series 的索引和切片 2.DataFrame (1.)創建 DataFrame (2.)…

使用 Vue 實現移動端視頻錄制與自動截圖功能

文章目錄技術棧功能介紹video標簽屬性完整代碼js 前端實現將視頻Blob轉Base64java 后端實現將視頻Base64轉mp4文件在移動端網頁開發中,使用攝像頭錄制視頻并自動生成截圖是一個常見的需求,比如身份認證、人臉識別或互動問卷等場景。本文將介紹如何使用 V…

單片機是怎么控制步進電機的?

步進電機作為一種將電脈沖信號轉化為角位移的執行機構,其運轉依賴于脈沖信號的控制,而單片機作為控制核心,通過輸出特定的脈沖信號和方向信號,實現對步進電機的步數、方向、轉速的精準控制,整個過程需結合驅動電路、程…

數據庫binlog日志查看方案

binlog可以查看當前數據庫中所有的修改操作,包含數據和結構的修改,所以掌握數據庫日志查看是有必要的 通過客戶端連接到mysql 查看binlog日志的存儲位置(前提是已開啟binlog) -- 查看日志文件列表 SHOW BINARY LOGS;結果示例-- 這…

MinIO Go 客戶端使用詳解:對象存儲開發實戰指南

MinIO GO-SDK ? 一、準備工作 1. 環境依賴 2. 安裝 SDK ?? 二、初始化 MinIO 客戶端 ?? 三、創建 Bucket(存儲桶) ?? 四、上傳對象 ?? 五、下載對象 ?? 六、列出對象列表 ??? 七、刪除對象 ?? 八、總結 ?? 推薦閱讀: 隨著云原生架構的發展,對象存儲已成為…

linux-process

Linux進程概念 1. 進程概念 1.1 理解馮諾依曼體系解構 馮諾依曼體系解構五大核心: 運算器:負責算數運算(加減乘除)和邏輯運算(與或非)。 控制器:從內存中讀取指令,并協調其他部件…

《西蒙學習法》核心思想的感悟與思考

以下是對《西蒙學習法》核心思想的感悟與思考,結合書中要點提煉為可實踐的學習哲學:一、破除學習迷思:從“記憶量”到“認知升級”學習≠記憶 大腦不是硬盤,知識存儲無限但時間有限。真正的學習是建立“解決問題的程序”&#xff…

互聯網隱私的未來:Web3、區塊鏈與神秘法寶

隨著互聯網技術的飛速發展,用戶隱私保護成為了一個全球性的話題。Web3和區塊鏈技術的出現,為互聯網隱私的未來提供了新的可能性。本文將探討這些技術如何塑造隱私保護的新格局,并介紹一些神秘的法寶,它們在保護用戶隱私方面發揮著…

Go進階高并發(多線程)處理教程

Go進階高并發處理教程 目錄 Go并發編程基礎Goroutine深入理解同步原語詳解并發模式與最佳實踐性能優化技巧實戰案例 Go并發編程基礎 什么是并發? 并發是指程序能夠同時處理多個任務的能力。Go語言從設計之初就將并發作為核心特性,提供了簡潔而強大的…

一種基于單片機控制的太陽能電池板系統設計

摘 要: 設計的太陽能電池板系統,以單片機單元為核心,集檢測、光能跟蹤、板面清潔、輸出控制為一體,解決了傳統太陽能板控制功能簡單、效率低的技術問題,達到了自動監測輸出電能、自動清洗板面、全方位跟蹤光伏發電最大效率點的技術…

前端實現類瀏覽器的 Ctrl+F 全局搜索功能(Vue2 + mark.js,用于Electron 、QT等沒有瀏覽器Ctrl+F全局搜索功能的殼子中)

💻 在 Electron 中實現類瀏覽器的 CtrlF 全局搜索功能(Vue2 mark.js)本文介紹如何在 Electron 應用中構建一個像 Chrome 一樣的 CtrlF 查找框,支持全局高亮、滾動定位、關鍵詞計數與上下跳轉。? 背景 在網頁瀏覽器中&#xff0c…

詳解力扣高頻 SQL 50 題-1757.可回收且低脂的產品【入門】

傳送門:可回收且低脂的產品 題目 表:Products -------------------- | Column Name | Type | -------------------- | product_id | int | | low_fats | enum | | recyclable | enum | -------------------- product_id 是該表的主鍵(具有…

CSS3 網格元素

CSS3 網格元素(Grid Items)是網格容器(Grid Container)的直接子元素,它們參與 CSS 網格布局,并根據網格容器的規則在網格中定位和排列。以下是對網格元素的詳細中文講解,涵蓋定義、相關屬性、用…

30天打牢數模基礎-決策樹講解

案例代碼一、代碼說明本代碼針對員工離職預測問題,使用CART決策樹算法(基尼指數)實現分類,并包含特征重要性評估和樹結構可視化。數據為模擬的10個員工樣本,特征包括工作年限、月薪、是否加班、團隊氛圍評分&#xff0…

React與jQuery全棧實戰指南

以下是為React工程師優化的jQuery全棧指南,結合Thymeleaf項目需求與React思維模式,整合核心概念、避坑策略及實戰技巧。內容依據官方文檔與多篇技術文章優化補充,保留原有框架并深化關鍵細節: ?一、jQuery核心設計哲學 vs React?…