python基礎:用戶輸入和 while 循環

一、input() 函數的工作原理

input() 函數讓程序暫停運行,等待用戶輸入一些文本。獲取用戶輸入后,Python 將其賦給一個變量,以便使用。

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

1.?int() 來獲取數值輸入

在使用 input() 函數時,Python 會將用戶輸入解讀為字符串。

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

當試圖將該輸入用于數值比較時,Python 會報錯,因為它無法將字符串和整數進行比較

>>> age >= 18                                                                                                           
Traceback (most recent call last): File "<python-input-2>", line 1, in <module>                      
age >= 18  TypeError: '>=' not supported between instances of 'str' and 'int'

為了解決這個問題,可使用函數 int() 將輸入的字符串轉換為數值,確保能夠成功地執行比較操作:

>>> age = int(age)                                                                                                      
>>> age >= 18                                                                                                           
True

2.?求模運算符

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

>>> 4 % 3
1
>>> 5 % 3
2

二、while 循環簡介

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

1.?使用 while 循環

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

current_number = 1
while current_number <= 5:print(current_number)current_number += 1'''
結果:
1
2
3
4
5
'''

2.?讓用戶選擇何時退出

我們在其中定義了一個退出值,只要用戶輸入的不是這個值,程序就將一直運行:

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'q' to end the program."
message = ''
while message != 'q':message = input(prompt)print(message)
'''
結果:
Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.w
wTell me something, and I will repeat it back to you:
Enter 'q' to end the program.r
rTell me something, and I will repeat it back to you:
Enter 'q' to end the program.q
q'''

3.?使用標志

在要求滿足很多條件才繼續運行的程序中,可定義一個變量,用于判斷整個程序是否處于活動狀態。這個變量稱為標志(flag),充當程序的交通信號燈。可以讓程序在標志為 True 時繼續運行,并在任何事件導致標志的值為False 時讓程序停止運行。這樣,在 while 語句中就只需檢查一個條件:標志的當前值是否為 True。

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'q' to end the program."
message = ''
active = True
while active:message = input(prompt)if message == 'q':active = Falseelse:print(message)'''
結果:
Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.1
1Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.2
2Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.q
'''

4.?使用 break 退出循環

如果不管條件測試的結果如何,想立即退出 while 循環,不再運行循環中余下的代碼,可使用 break 語句。break 語句用于控制程序流程,可用來控制哪些代碼行將執行、哪些代碼行不執行,從而讓程序按你的要求執行你要執行的代碼。

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'q' to end the program."
message = ''
while True:city = input(prompt)if city == 'q':breakelse:print(f"I'd love {city}.")'''
結果:
Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.sh
I'd love sh.Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.yn
I'd love yn.Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.q'''

5.?在循環中使用 continue

要返回循環開頭,并根據條件測試的結果決定是否繼續執行循環,可使用continue 語句,它不像 break 語句那樣不再執行余下的代碼并退出整個循環。例如,來看一個從 1 數到 10,只打印其中奇數的循環:

current_number = 0
while current_number < 10:current_number += 1if current_number % 2 == 0:continueprint(current_number)'''
結果:
1
3
5
7
9
'''

三、使用 while 循環處理列表和字典

通過將 while 循環與列表和字典結合起來使用,可收集、存儲并組織大量的輸入,供以后查看和使用。

1.?在列表之間移動元素

# 首先,創建一個待驗證用戶列表
# 和一個用于存儲已驗證用戶的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# 驗證每個用戶,直到沒有未驗證用戶為止
# 將每個經過驗證的用戶都移到已驗證用戶列表中
while unconfirmed_users:current_user = unconfirmed_users.pop()print(f"Verifying user: {current_user}")confirmed_users.append(current_user)
# 顯示所有的已驗證用戶
print("\nThe following users are confirmed:")
for confirmed_user in confirmed_users:print(confirmed_user.title())'''
結果:
Verifying user: candace
Verifying user: brian
Verifying user: aliceThe following users are confirmed:
Candace
Brian
Alice'''

2.?刪除為特定值的所有列表元素

pets = ['dog', 'cat', 'goldfish', 'cat', 'rabbit']
print(pets)
while 'cat' in pets:pets.remove('cat')
print(pets)'''
結果:
['dog', 'cat', 'goldfish', 'cat', 'rabbit']
['dog', 'goldfish', 'rabbit']'''

3.?使用用戶輸入填充字典

可以使用 while 循環提示用戶輸入任意多的信息

responses = {}
# 設置一個標準,指出調查是否繼續
polling_active = True
while polling_active:# 提示輸入被調查者的名字和回答name = input("\nWhat is your name? ")response = input("Which mountain would you like to climb someday?")# 將回答存儲在字典中responses[name] = response# 看看是否還有人參與調查repeat = input("Would you like to let another person respond? [Y/N]")if repeat == 'no':polling_active = False
print("\n--- Poll Results ---")
for name, responses in responses.items():print(f"{name}: {responses}")'''
結果:
What is your name? zhnagsan
Which mountain would you like to climb someday?taishan
Would you like to let another person respond? [Y/N]YWhat is your name? lisi
Which mountain would you like to climb someday?yueshan
Would you like to let another person respond? [Y/N]NWhat is your name? wangwu
Which mountain would you like to climb someday?qianlishan
Would you like to let another person respond? [Y/N]no--- Poll Results ---
zhnagsan: taishan
lisi: yueshan
wangwu: qianlishan
'''

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

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

相關文章

開啟云服務器mysql本地連接(is not allowed to connect to this mysql server)

is not allowed to connect tothis mmysql server 阿里云上安裝的mysql&#xff0c;發現用本地電腦的navicat鏈接不上。通過了解知道了原因&#xff0c;小二在此寫了一篇&#xff0c;省的以后自己在碰到。 錯誤如圖。 aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTU4MTU1My8…

電腦的時間同步電池壞掉了,每次開機都要調整時間

電腦的時間同步的電池沒電了&#xff0c;每天開機時間都不對&#xff0c;要打開時間同步按鈕來設置時間解決方案1.找到這個設置并打開&#xff0c;實際上&#xff0c;要打開這個界面&#xff0c;時間才會同步&#xff0c;可能是我的電腦原因&#xff0c;所以我沒辦法打開這個就…

mycat在游戲中的使用場景(郵件表,mysql集群,而不是郵件服)

其實還有一種是SharingJDBC&#xff0c;而且之間在B站的同學也是說用這個&#xff0c;但是我們目前項目郵件中用的卻是: mycat&#xff0c;為什么呢&#xff1f;mycat其實是中間件&#xff0c;是需要獨立部署的&#xff0c;是數據庫服務器這塊的代理&#xff0c;在應用層的話很…

TP-Link Archer C50路由器曝安全漏洞,硬編碼DES密鑰可解密敏感配置

漏洞概述CERT協調中心&#xff08;CERT/CC&#xff09;發布安全公告&#xff0c;披露TP-Link Archer C50路由器存在編號為CVE-2025-6982的漏洞。該漏洞源于路由器固件中使用了硬編碼的DES&#xff08;數據加密標準&#xff09;解密密鑰&#xff0c;這一設計缺陷使大量家庭和小型…

番茄項目3:完成了項目的數據庫設計

今天抽了會時間設計了下表結構&#xff0c;并選定的使用的數據庫&#xff0c;經過調查&#xff0c;我決定還是把數據存在數據庫中&#xff0c;因為寫SQL是我擅長的。 最終我選擇使用python自帶的sqlite來實現這個工具&#xff0c;具體建表語句如下&#xff1a; 基于AI生成&…

11、read_object_model_3d 讀取點云

個人理解 read_object_model_3d 這個Halcon算子中的xyz_map_width這個參數設置的目的就是,把讀取的點云數據中每一個點的XYZ坐標,生成一個對應的二維圖像,其中圖像中的坐標值就對應每一個點的索引坐標,而圖像中的灰度值就對應xyz坐標??(因為得到的是三通道圖像)!!并且根…

【人工智能-17】機器學習:KNN算法、模型選擇和調優、樸素貝葉斯分類

上一期【人工智能-16】機器學習&#xff1a;概念、工具介紹、數據集、特征工程 文章目錄一 、KNN算法1. 應用理由2. 原理核心&#xff1a;距離度量 多數投票/平均3. 優點和缺點二、模型選擇和調優1.使用理由2.原理核心&#xff1a;數據劃分與性能平均3.超參數搜索4. 應用場景總…

關于繼承的一些知識(C++)

當我們想要設計幾個類分別記錄老師&#xff0c;學生的個人信息時會發現&#xff0c;像姓名、地址、身份證號、電話等等記錄基礎信息的成員變量是都具有的&#xff0c;重復定義會顯得冗余&#xff0c;但同時它們兩者又具有不同的記錄信息的成員變量&#xff0c;像學生需要記錄學…

永磁同步電機無速度算法--脈振方波注入法

一、原理介紹為了實現表貼式永磁電機的低速運行&#xff0c;研究一種基于高頻方波測試信號注入的無位置零低速傳感器控制策略。選取注入到觀測直軸的脈振高頻方波信號&#xff0c; 該信號注入方案可以有效避免旋轉信號注入法在轉子交軸分量引起轉矩脈動&#xff0c; 提高系統的…

VSCode Python 與 C++ 聯合調試配置指南

VSCode Python 與 C 聯合調試配置指南 為了實現 Python 與 C 的聯合調試&#xff0c;需要正確配置 launch.json 文件&#xff0c;具體配置如下&#xff1a; {// IntelliSense 支持查看屬性描述// 更多信息請參考: https://go.microsoft.com/fwlink/?linkid830387"version…

stm32和freeRtos的can總線

STM32內置bxCAN外設&#xff08;CAN控制器、拓展CAN&#xff09;&#xff0c;支持CAN2.0A和2.0B(全部的CAN)&#xff0c;可以自動發送CAN報文和按照過濾器自動接收指定CAN報文&#xff0c;程序只需處理報文數據而無需關注總線的電平細節波特率最高可達1兆位/秒&#xff0c;高速…

充電樁與照明“聯動”創新:智慧燈桿破解新能源基建難題

伴隨新能源汽車保有量呈現出極為迅猛的爆發式增長態勢&#xff0c;充電基礎設施的建設已然逐步成為城市發展進程中不可或缺的剛性需求。國家政策鼓勵推進充電設施同城市基礎設施展開一體化的建設工作&#xff0c;同時大力鼓勵“諸如路燈、監控桿這類市政設施去整合充電相關功能…

datagrip連接mysql數據庫過程以及遇到的問題

如果遇到這種錯誤說明時區錯誤&#xff0c;解決方法 jdbc:mysql://localhost:3306?serverTimezoneGMTdatagrip連接mysql數據庫下一步

Vue 3.5 defineModel:讓組件開發效率提升 10 倍

簡介 defineModel 是 Vue 3.4 引入并在 Vue 3.5 中穩定的一個組合式 API&#xff0c;它簡化了組件的雙向數據綁定實現。在此之前&#xff0c;實現雙向綁定需要手動定義 props 和 emits&#xff0c;而 defineModel 將這個過程自動化&#xff0c;讓代碼更加簡潔和直觀。 主要特…

性能測試-性能測試中的經典面試題一

一、核心概念與流程類性能測試的核心類型與區別負載測試&#xff1a;逐步加壓&#xff0c;探測系統閾值&#xff08;如最大TPS/響應時間&#xff09;。壓力測試&#xff1a;超越閾值施壓&#xff0c;驗證系統崩潰點及恢復能力。穩定性測試&#xff1a;80%~90%峰值壓力持續運行&…

華為昇騰芯片:多模態模型國產化的硬核突破

前言 在當今數字化時代&#xff0c;人工智能技術的發展日新月異&#xff0c;多模態模型作為 AI 領域的重要發展方向&#xff0c;正逐漸改變著人們與計算機交互的方式以及眾多行業的運作模式。多模態模型能夠處理多種類型的數據&#xff0c;比如圖像、文本、語音等&#xff0c;從…

阿里智能AI框架Playground,即學即用

Spring AI Alibaba Playground 是 Spring AI Alibaba 社區以 Spring AI Alibaba 和 Spring AI 為框架搭建的 AI 應用。包含完善的前端 UI 后端實現&#xff0c;具備對話&#xff0c;圖片生成&#xff0c;工具調用&#xff0c;RAG&#xff0c;MCP 等眾多 AI 相關功能。在 playg…

智能Agent場景實戰指南 Day 28:Agent成本控制與商業模式

【智能Agent場景實戰指南 Day 28】Agent成本控制與商業模式 文章標簽 AI Agent, 成本優化, 商業模式, LLM應用, 企業級AI 文章簡述 本文是"智能Agent場景實戰指南"系列的第28天&#xff0c;聚焦智能Agent的成本控制與商業模式設計這一關鍵課題。文章首先分析了Ag…

sqli-labs:Less-8關卡詳細解析

1. 思路&#x1f680; 本關的SQL語句為&#xff1a; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入類型&#xff1a;字符串型&#xff08;單引號包裹&#xff09;提示&#xff1a;參數id需以閉合 同樣無法像常規一樣回顯&#xff0c;php輸出語句的代碼如下&…

LeetCode 1782.統計點對的數目

給你一個無向圖&#xff0c;無向圖由整數 n &#xff0c;表示圖中節點的數目&#xff0c;和 edges 組成&#xff0c;其中 edges[i] [ui, vi] 表示 ui 和 vi 之間有一條無向邊。同時給你一個代表查詢的整數數組 queries 。 第 j 個查詢的答案是滿足如下條件的點對 (a, b) 的數…