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

目錄

5.4 使用 if 語句處理列表

5.4.1 檢查特殊元素

toppings.py

5.4.2 確定列表不是空的

5.4.3 使用多個列表

5.5 設置 if 語句的格式

5.6 小結

第6章

字 典

6.1 一個簡單的字典

alien.py

6.2 使用字典

6.2.1 訪問字典中的值

6.2.2 添加鍵—值對

6.2.3 先創建一個空字典

有時候,在空字典中添加鍵—值對是為了方便,而有時候必須這樣做。為此,可先使用一對 空的花括號定義一個字典,再分行添加各個鍵—值對。例如,下例演示了如何以這種方式創建字 典alien_0:

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


5.4 使用 if 語句處理列表

通過結合使用if語句和列表,可完成一些有趣的任務:對列表中特定的值做特殊處理;高 效地管理不斷變化的情形,如餐館是否還有特定的食材;證明代碼在各種情形下都將按預期那 樣運行。

5.4.1 檢查特殊元素

本章開頭通過一個簡單示例演示了如何處理特殊值'bmw'——它需要采用不同的格式進行打 印。既然你對條件測試和if語句有了大致的認識,下面來進一步研究如何檢查列表中的特殊值, 并對其做合適的處理。

繼續使用前面的比薩店示例。這家比薩店在制作比薩時,每添加一種配料都打印一條消息。 通過創建一個列表,在其中包含顧客點的配料,并使用一個循環來指出添加到比薩中的配料,可 以以極高的效率編寫這樣的代碼:

toppings.py

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")

輸出很簡單,因為上述代碼不過是一個簡單的for循環:

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

然而,如果比薩店的青椒用完了,該如何處理呢?為妥善地處理這種情況,可在for循環中 包含一條if語句:

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

這里在比薩中添加每種配料前都進行檢查。1處的代碼檢查顧客點的是否是青椒,如果是, 就顯示一條消息,指出不能點青椒的原因。2處的else代碼塊確保其他配料都將添加到比薩中。 輸出表明,妥善地處理了顧客點的每種配料:

Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.
Finished making your pizza!

5.4.2 確定列表不是空的

到目前為止,對于處理的每個列表都做了一個簡單的假設,即假設它們都至少包含一個元素。 我們馬上就要讓用戶來提供存儲在列表中的信息,因此不能再假設循環運行時列表不是空的。有 鑒于此,在運行for循環前確定列表是否為空很重要。

下面在制作比薩前檢查顧客點的配料列表是否為空。如果列表是空的,就向顧客確認他是否 要點普通比薩;如果列表不為空,就像前面的示例那樣制作比薩:

1 requested_toppings = []
2 if requested_toppings:for requested_topping in requested_toppings:print("Adding " + requested_topping + ".")print("\nFinished making your pizza!")
3 else:print("Are you sure you want a plain pizza?")

在這里,我們首先創建了一個空列表,其中不包含任何配料(見1)。在2處我們進行了簡 單檢查,而不是直接執行for循環。在if語句中將列表名用在條件表達式中時,Python將在列表 至少包含一個元素時返回True,并在列表為空時返回False。如果requested_toppings不為空,就 運行與前一個示例相同的for循環;否則,就打印一條消息,詢問顧客是否確實要點不加任何配 料的普通比薩(見3)。

在這里,這個列表為空,因此輸出如下——詢問顧客是否確實要點普通比薩:

Are you sure you want a plain pizza?

如果這個列表不為空,將顯示在比薩中添加的各種配料的輸出。

5.4.3 使用多個列表

顧客的要求往往五花八門,在比薩配料方面尤其如此。如果顧客要在比薩中添加炸薯條,該 怎么辦呢?可使用列表和if語句來確定能否滿足顧客的要求。

來看看在制作比薩前如何拒絕怪異的配料要求。下面的示例定義了兩個列表,其中第一個列 表包含比薩店供應的配料,而第二個列表包含顧客點的配料。這次對于requested_toppings中的 每個元素,都檢查它是否是比薩店供應的配料,再決定是否在比薩中添加它:

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

在1處,我們定義了一個列表,其中包含比薩店供應的配料。請注意,如果比薩店供應的配 料是固定的,也可使用一個元組來存儲它們。在2處,我們又創建了一個列表,其中包含顧客點 的配料,請注意那個不同尋常的配料——'french fries'。在3處,我們遍歷顧客點的配料列表。 在這個循環中,對于顧客點的每種配料,我們都檢查它是否包含在供應的配料列表中(見4); 如果答案是肯定的,就將其加入到比薩中,否則將運行else代碼塊(見5):打印一條消息,告 訴顧客不供應這種配料。

這些代碼的輸出整潔而詳實:

Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.
Finished making your pizza! 

通過為數不多的幾行代碼,我們高效地處理了一種真實的情形!

5.5 設置 if 語句的格式

本章的每個示例都展示了良好的格式設置習慣。在條件測試的格式設置方面,PEP 8提供的唯一 建議是,在諸如==、>=和<=等比較運算符兩邊各添加一個空格,例如,if age < 4:要比if age<4:好。 這樣的空格不會影響Python對代碼的解讀,而只是讓代碼閱讀起來更容易。

5.6 小結

在本章中,你學習了如何編寫結果要么為Ture要么為False的條件測試。你學習了如何編寫 簡單的if語句、if-else語句和if-elif-else結構。在程序中,你使用了這些結構來測試特定的條 件,以確定這些條件是否滿足。你學習了如何在利用高效的for循環的同時,以不同于其他元素 的方式對特定的列表元素進行處理。你還再次學習了Python就代碼格式方面提出的建議,這可確 保即便你編寫的程序越來越復雜,其代碼依然易于閱讀和理解。

在第6章,你將學習Python字典。字典類似于列表,但讓你能夠將不同的信息關聯起來。你 將學習如何創建和遍歷字典,以及如何將字典同列表和if語句結合起來使用。學習字典讓你能夠 模擬更多現實世界的情形。

第6章

字 典

6.1 一個簡單的字典

來看一個游戲,其中包含一些外星人,這些外星人的顏色和點數各不相同。下面是一個簡單 的字典,存儲了有關特定外星人的信息:

alien.py

alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points'])

字典alien_0存儲了外星人的顏色和點數。使用兩條print語句來訪問并打印這些信息,如 下所示:

green
5 

與大多數編程概念一樣,要熟練使用字典,也需要一段時間的練習。使用字典一段時間后, 你就會明白為何它們能夠高效地模擬現實世界中的情形。

6.2 使用字典

在Python中,字典是一系列鍵—值對。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之 相關聯的值。與鍵相關聯的值可以是數字、字符串、列表乃至字典。事實上,可將任何Python對 象用作字典中的值。

在Python中,字典用放在花括號{}中的一系列鍵—值對表示,如前面的示例所示:

alien_0 = {'color': 'green', 'points': 5} 

鍵—值對是兩個相關聯的值。指定鍵時,Python將返回與之相關聯的值。鍵和值之間用冒號 分隔,而鍵—值對之間用逗號分隔。在字典中,你想存儲多少個鍵—值對都可以。

最簡單的字典只有一個鍵—值對,如下述修改后的字典alien_0所示:

alien_0 = {'color': 'green'} 

這個字典只存儲了一項有關alien_0的信息,具體地說是這個外星人的顏色。在這個字典中, 字符串'color'是一個鍵,與之相關聯的值為'green'。

6.2.1 訪問字典中的值

要獲取與鍵相關聯的值,可依次指定字典名和放在方括號內的鍵,如下所示:

alien_0 = {'color': 'green'}
print(alien_0['color']) 

這將返回字典alien_0中與鍵'color'相關聯的值:

green

字典中可包含任意數量的鍵—值對。例如,下面是最初的字典alien_0,其中包含兩個鍵— 值對:

alien_0 = {'color': 'green', 'points': 5} 

現在,你可以訪問外星人alien_0的顏色和點數。如果玩家射殺了這個外星人,你就可以使 用下面的代碼來確定玩家應獲得多少個點:

alien_0 = {'color': 'green', 'points': 5}
1 new_points = alien_0['points']
2 print("You just earned " + str(new_points) + " points!")

上述代碼首先定義了一個字典,然后從這個字典中獲取與鍵'points'相關聯的值(見1), 并將這個值存儲在變量new_points中。接下來,將這個整數轉換為字符串,并打印一條消息,指出玩家獲得了多少個點(見2):

You just earned 5 points

如果你在有外星人被射殺時都運行這段代碼,就會獲取該外星人的點數。

6.2.2 添加鍵—值對

字典是一種動態結構,可隨時在其中添加鍵—值對。要添加鍵—值對,可依次指定字典名、用 方括號括起的鍵和相關聯的值。

下面在字典alien_0中添加兩項信息:外星人的x坐標和y坐標,讓我們能夠在屏幕的特定位 置顯示該外星人。我們將這個外星人放在屏幕左邊緣,且離屏幕上邊緣25像素的地方。由于屏幕 坐標系的原點通常為左上角,因此要將該外星人放在屏幕左邊緣,可將x坐標設置為0;要將該外 星人放在離屏幕頂部25像素的地方,可將y坐標設置為25,如下所示:

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
1 alien_0['x_position'] = 0
2 alien_0['y_position'] = 25
print(alien_0)

我們首先定義了前面一直在使用的字典,然后打印這個字典,以顯示其信息快照。在?處, 我們在這個字典中新增了一個鍵—值對,其中的鍵為'x_position',而值為0。在?處,我們重 復這樣的操作,但使用的鍵為'y_position'。打印修改后的字典時,將看到這兩個新增的鍵— 值對:

{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0} 

這個字典的最終版本包含四個鍵—值對,其中原來的兩個指定外星人的顏色和點數,而新增 的兩個指定位置。注意,鍵—值對的排列順序與添加順序不同。Python不關心鍵—值對的添加順序, 而只關心鍵和值之間的關聯關系。

6.2.3 先創建一個空字典

有時候,在空字典中添加鍵—值對是為了方便,而有時候必須這樣做。為此,可先使用一對 空的花括號定義一個字典,再分行添加各個鍵—值對。例如,下例演示了如何以這種方式創建字 典alien_0:

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)

這里首先定義了空字典alien_0,再在其中添加顏色和點數,得到前述示例一直在使用的 字典:

{'color': 'green', 'points': 5} 

使用字典來存儲用戶提供的數據或在編寫能自動生成大量鍵—值對的代碼時,通常都需要先 定義一個空字典。


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

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

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

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

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

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

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

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

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

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

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

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

相關文章

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

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

JAVA+SSM+springboot+MYSQL企業物資庫存進銷存管理系統

。該系統從兩個對象&#xff1a;由管理員和員工來對系統進行設計構建。主要功能包括首頁、個人中心、員工管理、項目信息管理、倉庫信息管理、供應商管理、項目計劃管理、物資庫存管理、到貨登記管理、物資出庫管理、物資入庫管理等功能進行管理。本企業物資管理系統方便員工快…

linux 定時任務

使用 crontab Usage: crontab [-u user] [-e|-l|-r] Crontab 的格式說明如下: * 逗號(‘,’) 指定列表值。如: “1,3,4,7,8″ * 中橫線(‘-’) 指定范圍值 如 “1-6″, 代表 “1,2,3,4,5,6″ * 星號 (‘*’) 代表所有可能的值 */15 表示每 15 分鐘執行一次 # Use the ha…

C++編程法則365天一天一條(24)RTTI運行時類型信息typeid和type_info

文章目錄 基本用法編譯時或運行時判定 基本用法 typeid 是 C 的一個運算符&#xff0c;它用于獲取表達式的類型信息。它返回一個 std::type_info 對象引用&#xff0c;該對象包含有關表達式的類型的信息。 要使用 typeid 運算符&#xff0c;需要包含 <typeinfo> 頭文件…

關于振動試驗

這是試驗的說明&#xff08;來自gbt4710-2009&#xff09; 這是試驗的參數&#xff1a; 一、試驗方向&#xff1a; 振動試驗中有幾個方向 除有關規范另有規定外&#xff0c;應在產品的三個互相垂直方向上進行振動試驗。 一般定義產品長邊為X軸向&#xff0c;短邊為Y軸向&…

飛書面試題匯總

面試相關經驗 Interview | JavaGuide(Java面試 學習指南) 同學1 7次面試 編程題匯總&#xff1a; 有序鏈表找中位數 &#xff08;飛書1面&#xff09; m個有序數組合并 &#xff08;飛書1面&#xff09; 海量數據尋找TopK&#xff08;口述&#xff09; &#xff08;飛書…

Android 10(Q) 以上普通 APP 隱藏應用圖標問題探究及解決方案

1、實驗環境 aosp 版本 10.0 系統 aosp 版本 13.0 系統 2、驗證結果 2.1 方式一 APP AndroidManifest.xml 中通過 activity-alias 配置帶 LAUNCHER 屬性 category&#xff0c;并且 android:enabled“true” 10.0 系統中可安裝后正常顯示 icon&#xff0c;通過 setComponen…

idea中run和debug是灰色的

【現象】idea中run和debug是灰色的 點擊 旁邊的Add Configuration…一看都是空白 【解決方法】&#xff1a; npm點開之后 【結果】

文本轉圖像 學習筆記

VQGAN (Vector Quantized Generative Adversarial Network) 是一種基于 GAN 的生成模型&#xff0c;可以將圖像或文本轉換為高質量的圖像。 VQ &#xff08;Vector Quantization&#xff09;是一種數據壓縮技術&#xff0c;是指將連續數據表示為離散化的向量。輸入的圖像或文本…

轉換NC或HDF數據時候轉出數據無坐標信息的處理方法

有時候我們在轉換NC或HDF數據時&#xff0c;有時候會出現沒有坐標信息的情況&#xff01;如下圖&#xff1a; 這種情況一般是原始數據將坐標信息存儲在說明文件中以便后期做生成坐標信息的處理、或坐標存儲的形式比較特殊&#xff0c;造成工具無法讀取&#xff01;這種數據處理…

Python迭代器與生成器研究記錄

Python迭代器與生成器研究記錄 前言 迭代器肯定是可迭代對象&#xff0c;但是可迭代對象不一定是迭代器&#xff0c;生成器一定是迭代器&#xff0c;但是迭代器不一定是生成器 生成器是特殊的迭代器&#xff0c;所以生成器一定是迭代器&#xff0c;迭代器一定是可迭代對象 我…

YOLOv8分割訓練及分割半自動標注

YOLOv8是基于目標檢測算法YOLOv5的改進版,它在YOLOv5的基礎上進行了優化和改進,加入了一些新的特性和技術,如切片注意力機制、骨干網絡的選擇等。 本文以yolov8-seg為基準,主要整理分割訓練流程及使用v8分割模型進行半自動標注的過程。 一、v8-seg訓練 1.1 環境配置 github…

【Altera】平臺設計器互連會回壓 AXI 接口怎么辦

說明 實現 AXI 接口的所有組件都具有發行或接受能力設置。每當互連檢測到管理器&#xff08;主管理器&#xff09;發出的事務多于管理器的發行容量設置時&#xff0c;互連將通過斷言 AxREADY 向管理器背壓。每當互連檢測到從屬&#xff08;從站&#xff09;接收的事務多于從屬的…

實用篇 | 一文快速構建人工智能前端展示streamlit應用

----------------------- &#x1f388;API 相關直達 &#x1f388;-------------------------- &#x1f680;Gradio: 實用篇 | 關于Gradio快速構建人工智能模型實現界面&#xff0c;你想知道的都在這里-CSDN博客 &#x1f680;Streamlit :實用篇 | 一文快速構建人工智能前端展…

Activity從下往上彈出視差效果實現

其實這篇文章是轉至簡書上的大佬的&#xff0c;加上我自己的代碼實踐了下發現可行&#xff0c;于是就分享下 先看效果 介紹: 其實有很多方法都可以實現這種效果&#xff0c;popwindow&#xff0c;Dialog&#xff0c;BottomSheetDialogFragment&#xff0c;BottomSheetDialog等…

Linux 安裝 Gitea.md

### 從官網下載git 和 gitea Git下載地址: https://mirrors.edge.kernel.org/pub/software/scm/git/ 下載 git-2.43.0.tar.gz: https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz Gitea下載地址: https://dl.gitea.com/gitea/ 下載 linux-arm64 的二進…

鏈表OJ—相交鏈表

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言 1、相交鏈表的題目&#xff1a; 方法講解&#xff1a; 圖文解析&#xff1a; 代碼實現&#xff1a; 總結 前言 世上有兩種耀眼的光芒&#xff0c;一種是正在升…

15.Java程序設計-基于SSM框架的微信小程序校園求職系統的設計與實現

摘要&#xff1a; 本研究旨在設計并實現一款基于SSM框架的微信小程序校園求職系統&#xff0c;以提升校園求職流程的效率和便捷性。通過整合微信小程序平臺和SSM框架的優勢&#xff0c;本系統涵蓋了用戶管理、職位發布與搜索、簡歷管理、消息通知等多個功能模塊&#xff0c;為…

愛智EdgerOS之深入解析AI圖像引擎如何實現AI視覺開發

一、前言 AI 視覺是為了讓計算機利用攝像機來替代人眼對目標進行識別&#xff0c;跟蹤并進一步完成一些更加復雜的圖像處理。這一領域的學術研究已經存在了很長時間&#xff0c;但直到 20 世紀 70 年代后期&#xff0c;當計算機的性能提高到足以處理圖片這樣大規模的數據時&am…