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

目錄

6.4.3 在字典中存儲字典

6.5 小結

第7章

用戶輸入和while循環

7.1 函數 input()的工作原理

7.1.1 編寫清晰的程序

7.1.2 使用 int()來獲取數值輸入

7.1.3 求模運算符

7.1.4 在 Python 2.7 中獲取輸入

7.2 while 循環簡介

7.2.1 使用 while 循環

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


6.4.3 在字典中存儲字典

可在字典中嵌套字典,但這樣做時,代碼可能很快復雜起來。例如,如果有多個網站用戶, 每個都有獨特的用戶名,可在字典中將用戶名作為鍵,然后將每位用戶的信息存儲在一個字典中, 并將該字典作為與用戶名相關聯的值。在下面的程序中,對于每位用戶,我們都存儲了其三項信 息:名、姓和居住地;為訪問這些信息,我們遍歷所有的用戶名,并訪問與每個用戶名相關聯的 信息字典:

many_users.py

users = {'aeinstein': {'first': 'albert','last': 'einstein','location': 'princeton',},'mcurie': {'first': 'marie','last': 'curie','location': 'paris',},}
1 for username, user_info in users.items():
2 print("\nUsername: " + username)
3 full_name = user_info['first'] + " " + user_info['last']
location = user_info['location']
4 print("\tFull name: " + full_name.title())print("\tLocation: " + location.title()) 

我們首先定義了一個名為users的字典,其中包含兩個鍵:用戶名'aeinstein'和'mcurie'; 與每個鍵相關聯的值都是一個字典,其中包含用戶的名、姓和居住地。在1處,我們遍歷字典 users,讓Python依次將每個鍵存儲在變量username中,并依次將與當前鍵相關聯的字典存儲在變 量user_info中。在主循環內部的2處,我們將用戶名打印出來。

在3處,我們開始訪問內部的字典。變量user_info包含用戶信息字典,而該字典包含三個鍵: 'first'、'last'和'location';對于每位用戶,我們都使用這些鍵來生成整潔的姓名和居住地, 然后打印有關用戶的簡要信息(見4):

Username: aeinsteinFull name: Albert EinsteinLocation: Princeton
Username: mcurieFull name: Marie CurieLocation: Paris 

請注意,表示每位用戶的字典的結構都相同,雖然Python并沒有這樣的要求,但這使得嵌 套的字典處理起來更容易。倘若表示每位用戶的字典都包含不同的鍵,for循環內部的代碼將 更復雜。

6.5 小結

在本章中,你學習了:如何定義字典,以及如何使用存儲在字典中的信息;如何訪問和修改 字典中的元素,以及如何遍歷字典中的所有信息;如何遍歷字典中所有的鍵?值對、所有的鍵和 所有的值;如何在列表中嵌套字典、在字典中嵌套列表以及在字典中嵌套字典。

在下一章中,你將學習while循環以及如何從用戶那里獲取輸入。這是激動人心的一章,讓 你知道如何將程序變成交互性的——能夠對用戶輸入作出響應。

第7章

用戶輸入和while循環

7.1 函數 input()的工作原理

函數input()讓程序暫停運行,等待用戶輸入一些文本。獲取用戶輸入后,Python將其存儲在 一個變量中,以方便你使用。 例如,下面的程序讓用戶輸入一些文本,再將這些文本呈現給用戶:

parrot.py

message = input("Tell me something, and I will repeat it back to you: ")
print(message)

函數input()接受一個參數:即要向用戶顯示的提示或說明,讓用戶知道該如何做。在這個 示例中,Python運行第1行代碼時,用戶將看到提示Tell me something, and I will repeat it back to you:。程序等待用戶輸入,并在用戶按回車鍵后繼續運行。輸入存儲在變量message中,接下 來的print(message)將輸入呈現給用戶:

Tell me something, and I will repeat it back to you: Hello everyone!
Hello everyone! 

注意 Sublime Text不能運行提示用戶輸入的程序。你可以使用Sublime Text來編寫提示用戶輸入 的程序,但必須從終端運行它們。詳情請參閱1.4節。


7.1.1 編寫清晰的程序

每當你使用函數input()時,都應指定清晰而易于明白的提示,準確地指出你希望用戶提供 什么樣的信息——指出用戶該輸入任何信息的提示都行,如下所示:

greeter.py

name = input("Please enter your name: ")
print("Hello, " + name + "!") 

通過在提示末尾(這里是冒號后面)包含一個空格,可將提示與用戶輸入分開,讓用戶清楚 地知道其輸入始于何處,如下所示:

Please enter your name: Eric
Hello, Eric!

有時候,提示可能超過一行,例如,你可能需要指出獲取特定輸入的原因。在這種情況下, 可將提示存儲在一個變量中,再將該變量傳遞給函數input()。這樣,即便提示超過一行,input() 語句也非常清晰。

greeter.py

prompt = "If you tell us who you are, we can personalize the messages you see."
prompt += "\nWhat is your first name? "
name = input(prompt)
print("\nHello, " + name + "!")

這個示例演示了一種創建多行字符串的方式。第1行將消息的前半部分存儲在變量prompt中; 在第2行中,運算符+=在存儲在prompt中的字符串末尾附加一個字符串。 最終的提示橫跨兩行,并在問號后面包含一個空格,這也是出于清晰考慮:

If you tell us who you are, we can personalize the messages you see.
What is your first name? Eric
Hello, Eric!

7.1.2 使用 int()來獲取數值輸入

使用函數input()時,Python將用戶輸入解讀為字符串。請看下面讓用戶輸入其年齡的解釋器 會話:

>>> age = input("How old are you? ")
How old are you? 21
>>> age
'21'

用戶輸入的是數字21,但我們請求Python提供變量age的值時,它返回的是'21'——用戶輸入 的數值的字符串表示。我們怎么知道Python將輸入解讀成了字符串呢?因為這個數字用引號括起 了。如果我們只想打印輸入,這一點問題都沒有;但如果你試圖將輸入作為數字使用,就會引發 錯誤:

>>> age = input("How old are you? ")
How old are you? 21
1 >>> age >= 18
Traceback (most recent call last):File "<stdin>", line 1, in <module>
2 TypeError: unorderable types: str() >= int()

你試圖將輸入用于數值比較時(見?),Python會引發錯誤,因為它無法將字符串和整數進 行比較:不能將存儲在age中的字符串'21'與數值18進行比較(見?)。 為解決這個問題,可使用函數int(),它讓Python將輸入視為數值。函數int()將數字的字符 串表示轉換為數值表示,如下所示:

>>> age = input("How old are you? ")
How old are you? 21
1 >>> age = int(age)
>>> age >= 18
True

在這個示例中,我們在提示時輸入21后,Python將這個數字解讀為字符串,但隨后int()將這 個字符串轉換成了數值表示(見?)。這樣Python就能運行條件測試了:將變量age(它現在包含 數值21)同18進行比較,看它是否大于或等于18。測試結果為True。 如何在實際程序中使用函數int()呢?請看下面的程序,它判斷一個人是否滿足坐過山車的 身高要求: rollercoaster.py

height = input("How tall are you, in inches? ")
height = int(height)
if height >= 36:print("\nYou're tall enough to ride!")
else: print("\nYou'll be able to ride when you're a little older.") 

在這個程序中,為何可以將height同36進行比較呢?因為在比較前,height = int(height) 將輸入轉換成了數值表示。如果輸入的數字大于或等于36,我們就告訴用戶他滿足身高條件:

How tall are you, in inches? 71
You're tall enough to ride!

將數值輸入用于計算和比較前,務必將其轉換為數值表示。

7.1.3 求模運算符

處理數值信息時,求模運算符(%)是一個很有用的工具,它將兩個數相除并返回余數:

>>> 4 % 3
1
>>> 5 % 3
2
>>> 6 % 3
0
>>> 7 % 3
1 

求模運算符不會指出一個數是另一個數的多少倍,而只指出余數是多少。 如果一個數可被另一個數整除,余數就為0,因此求模運算符將返回0。你可利用這一點來判 斷一個數是奇數還是偶數:

even_or_odd.py

number = input("Enter a number, and I'll tell you if it's even or odd: ")
number = int(number)
if number % 2 == 0:print("\nThe number " + str(number) + " is even.")
else:print("\nThe number " + str(number) + " is odd.")

偶數都能被2整除,因此對一個數(number)和2執行求模運算的結果為零,即number % 2 == 0,那么這個數就是偶數;否則就是奇數。

Enter a number, and I'll tell you if it's even or odd: 42
The number 42 is even. 

7.1.4 在 Python 2.7 中獲取輸入

如果你使用的是Python 2.7,應使用函數raw_input()來提示用戶輸入。這個函數與Python 3 中的input()一樣,也將輸入解讀為字符串。 Python 2.7也包含函數input(),但它將用戶輸入解讀為Python代碼,并嘗試運行它們。因此, 最好的結果是出現錯誤,指出Python不明白輸入的代碼;而最糟的結果是,將運行你原本無意運 行的代碼。如果你使用的是Python 2.7,請使用raw_input()而不是input()來獲取輸入。

7.2 while 循環簡介

for循環用于針對集合中的每個元素都一個代碼塊,而while循環不斷地運行,直到指定的條 件不滿足為止。

7.2.1 使用 while 循環

你可以使用while循環來數數,例如,下面的while循環從1數到5:

counting.py

current_number = 1
while current_number <= 5:print(current_number)current_number += 1 

在第1行,我們將current_number設置為1,從而指定從1開始數。接下來的while循環被設置 成這樣:只要current_number小于或等于5,就接著運行這個循環。循環中的代碼打印 current_number的值,再使用代碼current_number += 1(代碼current_number = current_number + 1的簡寫)將其值加1。 只要滿足條件current_number <= 5,Python就接著運行這個循環。由于1小于5,因此Python 打印1,并將current_number加1,使其為2;由于2小于5,因此Python打印2,并將current_number 加1,使其為3,以此類推。一旦current_number大于5,循環將停止,整個程序也將到此結束:

1
2
3
4
5 

你每天使用的程序很可能就包含while循環。例如,游戲使用while循環,確保在玩家想玩時 不斷運行,并在玩家想退出時停止運行。如果程序在用戶沒有讓它停止時停止運行,或者在用戶 要退出時還繼續運行,那就太沒有意思了;有鑒于此,while循環很有用。


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

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

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

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

相關文章

基于jsonrpc4j實現JSON-RPC over HTTP(客戶端多種調用方式)

1.說明 前文基于jsonrpc4j實現JSON-RPC over HTTP(服務端集成Spring Boot)&#xff0c; 介紹了JSON-RPC over HTTP服務端的實現方法&#xff0c; 并且通過Postman工具調用服務端對外提供的方法&#xff0c; 下面介紹兩種基于Java代碼調用客戶端的方法&#xff1a; 非Spring框…

什么是https 加密協議?

什么是https 加密協議&#xff1f; 加密通信的作用加密原理數字證書SSL/TLS 協議部署和使用重要性 HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是一種網絡傳輸協議&#xff0c;它是基于HTTP協議的擴展&#xff0c;通過加密通信內容來保障數據傳輸的安全…

SPI 通信-stm32入門

本節我們將繼續學習下一個通信協議 SPI&#xff0c;SPI 通信和我們剛學完的 I2C 通信差不多。兩個協議的設計目的都一樣&#xff0c;都是實現主控芯片和各種外掛芯片之間的數據交流&#xff0c;有了數據交流的能力&#xff0c;我們主控芯片就可以掛載并操縱各式各樣的外部芯片&…

gpu版本的GNN的demo

1、當涉及到在GPU上運行圖神經網絡&#xff08;GNN&#xff09;時&#xff0c;通常使用深度學習框架&#xff0c;如PyTorch或TensorFlow。在這里&#xff0c;我將為您提供一個使用PyTorch Geometric庫實現GNN的簡單示例。 首先&#xff0c;確保您已經安裝了PyTorch和PyTorch G…

第 375 場 LeetCode 周賽題解

A 統計已測試設備 模擬&#xff1a;記錄當前已測試設備數量 class Solution { public:int countTestedDevices(vector<int> &batteryPercentages) {int res 0;int s 0;for (auto x: batteryPercentages) {if (x - s > 0) {res;s;}}return res;} };B 雙模冪運算 …

【無線網絡技術】——無線城域網(學習筆記)

&#x1f4d6; 前言&#xff1a;無線城域網&#xff08;WMAN&#xff09;是指在地域上覆蓋城市及其郊區范圍的分布節點之間傳輸信息的本地分配無線網絡。能實現語音、數據、圖像、多媒體、IP等多業務的接入服務。其覆蓋范圍的典型值為3~5km&#xff0c;點到點鏈路的覆蓋可以高達…

少兒編程考級:激發孩子邏輯思維能力的關鍵

在當今信息化時代&#xff0c;少兒編程已經成為孩子們不可或缺的一項技能。而少兒編程考級&#xff0c;則是檢驗孩子們在這一技能上所取得的成就的重要途徑。少兒編程考級不僅能夠激發孩子們的邏輯思維能力&#xff0c;還能夠提高他們的動手能力和創造力。6547網將詳細介紹少兒…

電源模塊測試系統測試LED電源項目的優勢

LED電源測試是電源在設計、生產過程中的關鍵環節&#xff0c;也是確保LED照明產品可靠性和穩定性的重要步驟。LED電源測試一般包括電壓、電流、效率、穩定性等。電源模塊測試系統測試LED電源&#xff0c;實現自動化測試&#xff0c;保證測試結果的可靠性。 LED電源測試項目及方…

實現加鹽加密方法以及MappedByteBuffer,RandomAccess

目錄 自己實現 Spring Security MappedByteBuffer RandomAccess 加鹽加密的實現 自己實現 傳統MD5可通過彩虹表暴力破解&#xff0c; 加鹽加密算法是一種常用的密碼保護方法&#xff0c;它將一個隨機字符串&#xff08;鹽&#xff09;添加到原始密碼中&#xff0c;然后再進…

力扣17. 電話號碼的字母組合(java 回溯法)

Problem: 17. 電話號碼的字母組合 文章目錄 題目描述思路解題方法復雜度Code 題目描述 思路 題目給定一串數字&#xff0c;要求我們找出所有可能的字母組合&#xff0c;即我們可以窮舉出所有可能的結果&#xff0c;而涉及到窮舉我們自然可以想到利用回溯來解決問題&#xff0c…

xv6 中的一些系統調用(下)

〇、前言 本文將會結合源代碼談論 sleep、wakeup 這兩個系統調用。 一、sleep()系統調用 以下是sleep()函數源碼&#xff1a; // Atomically release lock and sleep on chan. // Reacquires lock when awakened. void sleep(void *chan, struct spinlock *lk) {struct pro…

無線且列窄圖片如何轉excel?

寫此文原因&#xff1a;圖片要轉excel&#xff0c;這放以前&#xff0c;是不能實現的功能&#xff0c;但隨著人工智能的蓬勃發展&#xff0c;人們已克服了這一難題&#xff0c;但是&#xff0c;我們知道&#xff0c;要將圖片識別成excel&#xff0c;識別程序首先要先識別圖片中…

如何在小米路由器4A千兆版刷入OpenWRT并通過內網穿透工具實現公網遠程訪問

文章目錄 前言1. 安裝Python和需要的庫2. 使用 OpenWRTInvasion 破解路由器3. 備份當前分區并刷入新的Breed4. 安裝cpolar內網穿透4.1 注冊賬號4.2 下載cpolar客戶端4.3 登錄cpolar web ui管理界面4.4 創建公網地址 5. 固定公網地址訪問 前言 OpenWRT是一個高度模塊化、高度自…

交易歷史記錄20231206 記錄

昨日回顧&#xff1a; select top 10000 * from dbo.CODEINFO A left join dbo.全部&#xff21;股20231206010101 B ON A.CODE B.代碼 left join dbo.全部&#xff21;股20231206CONF D on A.CODED.代碼left join dbo.全部&#xff21;股20231206 G on A.CODEG.代碼 left…

解決前端跨域問題,后端解決方法

Spring CloudVue前后端分離項目報錯&#xff1a;Network Error&#xff1b;net::ERR_FAILED&#xff08;請求跨越&#xff09;-CSDN博客記錄自用

Kafka-快速實戰

Kafka介紹 ChatGPT對于Apache Kafka的介紹&#xff1a; Apache Kafka是一個分布式流處理平臺&#xff0c;最初由LinkedIn開發并于2011年開源。它主要用于解決大規模數據的實時流式處理和數據管道問題。 Kafka是一個分布式的發布-訂閱消息系統&#xff0c;可以快速地處理高吞吐…

阿里云國際基于CentOS系統鏡像快速部署Apache服務

阿里云輕量應用服務器提供了Windows Server系統鏡像和主流的Linux系統鏡像&#xff0c;您可以通過該類鏡像創建純凈、安全、穩定的運行環境。本文以CentOS 7.6系統鏡像為例&#xff0c;介紹如何快速配置Apache服務。 背景信息 注意&#xff0c;阿里云國際通過corebyt注冊并充…

使用rawpy.imread讀取.RAW格式數據和.dng格式數據(附代碼)

.dng格式是一個更兼容、更高效的RAW格式。如果需要在不同軟件之間交換RAW文件&#xff0c;或者需要在軟件中進行大量編輯&#xff0c;那么.dng格式是一個不錯的選擇。 目錄 一、 .dng格式數據和.RAW格式數據二、 .dng格式數據和.RAW格式數據區別三、安裝rawpy包四、讀取.dng格式…

Flask應用基礎入門總結

【1】使用migrate方式進行數據庫連接 使用migrate方式進行數據庫連接需要在終端分別運行三行代碼&#xff1a; #init&#xff08;運行一次即可&#xff09;&#xff08;此db為自己設置的連接數據庫的對象,可以修改&#xff09; flask db init #&#xff08;將orm模型生成遷移…

從零開始搭建企業管理系統(四):集成 Knife4j

集成 Knife4j 前言Knife4j是什么集成 Knife4j引入 pom 依賴添加基礎配置啟動程序測試完善文檔信息編寫配置類修改 UserController修改 UserEntity修改 BaseEntity 文檔效果圖swagger 界面knife4j 界面 前言 前面一小節我們使用postman來進行接口的調試&#xff0c;如果接口一多…