Python中input輸入與While循環(huán)超詳細(xì)講解
一、用戶(hù)輸入:input()函數(shù)的全面解析
1. input()的基礎(chǔ)用法
功能:暫停程序執(zhí)行,等待用戶(hù)輸入文本,并以字符串形式返回輸入內(nèi)容。
示例:獲取用戶(hù)姓名并輸出問(wèn)候語(yǔ)
name = input("請(qǐng)輸入你的姓名:") #用戶(hù)輸入"張三"
print(f"你好,{name}!") #輸出:你好,張三!關(guān)鍵點(diǎn):
無(wú)論用戶(hù)輸入數(shù)字、符號(hào)還是文字,input()始終返回字符串。
提示語(yǔ)可包含說(shuō)明信息,引導(dǎo)用戶(hù)輸入符合要求的數(shù)據(jù)。
2. 數(shù)值輸入與類(lèi)型轉(zhuǎn)換
問(wèn)題:用戶(hù)輸入的數(shù)字會(huì)被視為字符串,無(wú)法直接用于數(shù)學(xué)運(yùn)算。
解決方案:使用`int()`或`float()`將字符串轉(zhuǎn)換為數(shù)值類(lèi)型。
# 示例:計(jì)算圓的周長(zhǎng)(需半徑為數(shù)值)
radius_str = input("請(qǐng)輸入圓的半徑:") # 用戶(hù)輸入"5"
radius = float(radius_str) # 轉(zhuǎn)換為浮點(diǎn)數(shù)
circumference = 2 * 3.14 * radius
print(f"周長(zhǎng)為:{circumference}") # 輸出:周長(zhǎng)為:31.4注意:若用戶(hù)輸入非數(shù)值內(nèi)容(如字母),轉(zhuǎn)換會(huì)報(bào)錯(cuò),需用`try-except`處理(見(jiàn)后文錯(cuò)誤處理)。
3. 字符串拼接與+=運(yùn)算符
功能:+=用于將一個(gè)字符串追加到另一個(gè)字符串末尾,等價(jià)于變量 = 變量 + 字符串。
# 示例:逐行收集用戶(hù)輸入并拼接
prompt = ""
while True:
line = input("請(qǐng)輸入內(nèi)容(輸入q結(jié)束):")
if line == "q":
break
prompt += line + "\n" # 追加輸入內(nèi)容并換行
print("收集的內(nèi)容:\n", prompt)應(yīng)用場(chǎng)景:構(gòu)建多行文本、日志記錄、用戶(hù)輸入?yún)R總等。
二、while循環(huán):條件驅(qū)動(dòng)的重復(fù)執(zhí)行
1. while循環(huán)的基本結(jié)構(gòu)
語(yǔ)法:
while 條件表達(dá)式:
循環(huán)體代碼 # 條件為T(mén)rue時(shí)重復(fù)執(zhí)行執(zhí)行邏輯:
先判斷條件表達(dá)式,若為`True`則執(zhí)行循環(huán)體,執(zhí)行完畢后再次判斷條件,直至條件為False時(shí)退出循環(huán)。
# 示例:打印1到5的數(shù)字
num = 1
while num <= 5:
print(num)
num += 1 # 關(guān)鍵:修改循環(huán)變量,避免無(wú)限循環(huán)輸出:
1 2 3 4 5
2. 循環(huán)控制語(yǔ)句:break與continue
break:強(qiáng)制退出循環(huán)
用于在滿(mǎn)足特定條件時(shí)立即終止循環(huán),跳出整個(gè)循環(huán)體。
# 示例:用戶(hù)輸入"exit"時(shí)退出程序
while True: # 無(wú)限循環(huán)(需用break退出)
command = input("請(qǐng)輸入命令(輸入exit退出):")
if command == "exit":
print("退出程序")
break
print(f"執(zhí)行命令:{command}")continue:跳過(guò)本次循環(huán)
用于跳過(guò)當(dāng)前循環(huán)中的剩余代碼,直接進(jìn)入下一次循環(huán)條件判斷。
# 示例:打印1到10中的偶數(shù)(跳過(guò)奇數(shù))
num = 0
while num < 10:
num += 1
if num % 2 != 0: # 若是奇數(shù),跳過(guò)打印
continue
print(f"偶數(shù):{num}")輸出:
偶數(shù):2 偶數(shù):4 偶數(shù):6 偶數(shù):8 偶數(shù):10
3. 避免無(wú)限循環(huán)
原因:若循環(huán)條件始終為T(mén)rue,且無(wú)break語(yǔ)句,循環(huán)會(huì)無(wú)限執(zhí)行(需手動(dòng)終止,如Ctrl+C)。
解決方案:
確保循環(huán)體內(nèi)有修改循環(huán)條件的代碼(如`num += 1`)。
添加break作為退出條件(如用戶(hù)輸入特定值)。
# 錯(cuò)誤示例:無(wú)限循環(huán)(缺少num更新)
num = 1
while num <= 5:
print(num)
# 修正后:
num = 1
while num <= 5:
print(num)
num += 1三、while循環(huán)與數(shù)據(jù)結(jié)構(gòu)的結(jié)合
1. 列表:動(dòng)態(tài)增刪元素
場(chǎng)景:需要根據(jù)用戶(hù)輸入動(dòng)態(tài)添加元素,或遍歷列表時(shí)修改列表(`for`循環(huán)遍歷列表時(shí)不建議修改)。
示例:收集用戶(hù)輸入的多個(gè)數(shù)字
numbers = []
while len(numbers) < 3: # 限制輸入3個(gè)數(shù)字
num = int(input("請(qǐng)輸入數(shù)字:"))
numbers.append(num)
print("輸入的數(shù)字列表:", numbers)刪除列表中所有特定值
remove()只能刪除首個(gè)匹配項(xiàng),結(jié)合while循環(huán)可刪除所有匹配項(xiàng)。
fruits = ["蘋(píng)果", "香蕉", "蘋(píng)果", "橘子"]
while "蘋(píng)果" in fruits: # 循環(huán)條件:列表中存在"蘋(píng)果"
fruits.remove("蘋(píng)果")
print("刪除后的列表:", fruits) # 輸出:['香蕉', '橘子']2. 字典:動(dòng)態(tài)構(gòu)建鍵值對(duì)
場(chǎng)景:逐個(gè)輸入鍵值對(duì),構(gòu)建用戶(hù)信息字典。
user_info = {}
while True:
key = input("請(qǐng)輸入字段名(輸入q結(jié)束):")
if key == "q":
break
value = input(f"請(qǐng)輸入{key}的值:")
user_info[key] = value
print("用戶(hù)信息:", user_info)輸入示例:
字段名:name → 值:Alice 字段名:age → 值:25 字段名:q → 結(jié)束輸入
輸出:
{'name': 'Alice', 'age': '25'}四、數(shù)值運(yùn)算與循環(huán):求模與累加
1. 求模運(yùn)算符(%)
功能:返回兩數(shù)相除的余數(shù),常用于判斷奇偶性、周期性任務(wù)等。
# 示例:判斷奇數(shù)/偶數(shù)
num = int(input("請(qǐng)輸入整數(shù):"))
if num % 2 == 0:
print(f"{num}是偶數(shù)")
else:
print(f"{num}是奇數(shù)")應(yīng)用:循環(huán)中每n次執(zhí)行特定操作
# 示例:每3次循環(huán)打印提示
count = 0
while count < 10:
count += 1
if count % 3 == 0:
print(f"第{count}次:執(zhí)行特殊操作")
else:
print(f"第{count}次:常規(guī)操作")2. 累加與累乘
累加器模式:初始化變量為0,循環(huán)中不斷相加。
# 計(jì)算1+2+...+100的和
total = 0
num = 1
while num <= 100:
total += num
num += 1
print("累加和:", total) # 輸出:5050累乘器模式:初始化變量為1,循環(huán)中不斷相乘。
# 計(jì)算5!(5的階乘)
factorial = 1
num = 1
while num <= 5:
factorial *= num
num += 1
print("階乘結(jié)果:", factorial) # 輸出:120五、嵌套循環(huán):解決多層邏輯問(wèn)題
1. 嵌套while循環(huán)
結(jié)構(gòu):在一個(gè)`while`循環(huán)體內(nèi)包含另一個(gè)`while`循環(huán),用于處理多層循環(huán)邏輯(如行與列的控制)。
# 示例:打印3行3列的星號(hào)矩陣
row = 0
while row < 3:
col = 0
while col < 3:
print("*", end=" ") # end=" "表示不換行,用空格分隔
col += 1
print() # 每行結(jié)束后換行
row += 1輸出:
* * * * * * * * *
2. while與for循環(huán)混合使用
場(chǎng)景:外層用`while`控制循環(huán)次數(shù),內(nèi)層用`for`遍歷數(shù)據(jù)。
# 示例:多次輸入姓名并逐個(gè)打印
count = 0
while count < 2:
names = input("請(qǐng)輸入姓名(用逗號(hào)分隔):").split(",")
for name in names:
print(f"姓名:{name.strip()}") # strip()去除空格
count += 1六、錯(cuò)誤處理:確保程序健壯性
1. 數(shù)值轉(zhuǎn)換異常處理
問(wèn)題:用戶(hù)輸入非數(shù)值內(nèi)容時(shí),`int(input())`會(huì)拋出`ValueError`。
解決方案:用`try-except`捕獲異常,提示用戶(hù)重新輸入。
while True:
try:
age = int(input("請(qǐng)輸入年齡(整數(shù)):"))
print(f"年齡為:{age}")
break
except ValueError:
print("輸入無(wú)效,請(qǐng)重新輸入整數(shù)!")2. 輸入驗(yàn)證:確保數(shù)據(jù)有效性
場(chǎng)景:限制輸入范圍(如年齡0-150)、禁止空輸入等。
while True:
username = input("請(qǐng)輸入用戶(hù)名(非空):").strip()
if not username: # 空字符串為False
print("用戶(hù)名不能為空!")
continue # 跳過(guò)本次循環(huán),重新輸入
if len(username) < 3:
print("用戶(hù)名至少3個(gè)字符!")
continue
print(f"歡迎,{username}!")
break七、常見(jiàn)錯(cuò)誤與注意事項(xiàng)
1. 無(wú)限循環(huán)
原因:循環(huán)條件始終為T(mén)rue且無(wú)`break`,或忘記更新循環(huán)變量。
調(diào)試技巧:在循環(huán)體內(nèi)添加`print(循環(huán)變量)`,觀(guān)察變量是否按預(yù)期變化。
2. 類(lèi)型錯(cuò)誤
原因:未將`input()`結(jié)果轉(zhuǎn)換為數(shù)值類(lèi)型,直接用于數(shù)學(xué)運(yùn)算。
# 錯(cuò)誤示例:字符串相加
a = input("a=") # 輸入"3"
b = input("b=") # 輸入"5"
print(a + b) # 輸出"35"(字符串拼接)修正:
a = int(input("a="))
b = int(input("b="))
print(a + b) # 輸出8(數(shù)值相加)3. break與continue混淆
區(qū)別:
break:跳出整個(gè)循環(huán),不再執(zhí)行后續(xù)循環(huán)。
continue:跳過(guò)本次循環(huán)的剩余代碼,繼續(xù)下一次循環(huán)。
總結(jié):核心知識(shí)點(diǎn)與應(yīng)用場(chǎng)景
知識(shí)點(diǎn) | 關(guān)鍵說(shuō)明 | 示例場(chǎng)景 |
input()函數(shù) | 獲取用戶(hù)輸入,返回字符串,需配合類(lèi)型轉(zhuǎn)換處理數(shù)值 | 計(jì)算器輸入、用戶(hù)注冊(cè)信息收集 |
while循環(huán) | 條件驅(qū)動(dòng)的循環(huán),適用于未知循環(huán)次數(shù)的場(chǎng)景 | 交互式菜單、數(shù)據(jù)驗(yàn)證循環(huán) |
break/continue | 控制循環(huán)流程,break退出循環(huán),continue跳過(guò)本次迭代 | 輸入`quit`退出程序、過(guò)濾無(wú)效數(shù)據(jù) |
列表與字典操作 | 結(jié)合循環(huán)動(dòng)態(tài)增刪元素,處理用戶(hù)輸入的不確定數(shù)據(jù) | 購(gòu)物車(chē)商品管理、用戶(hù)信息動(dòng)態(tài)存儲(chǔ) |
數(shù)值運(yùn)算 | 求模判斷奇偶性、累加/累乘計(jì)算 | 統(tǒng)計(jì)總分、計(jì)算階乘 |
錯(cuò)誤處理 | 捕獲輸入異常,驗(yàn)證數(shù)據(jù)有效性 | 防止程序因用戶(hù)錯(cuò)誤輸入崩潰 |
通過(guò)掌握以上內(nèi)容,可靈活運(yùn)用用戶(hù)輸入和while循環(huán)構(gòu)建交互式程序,處理動(dòng)態(tài)數(shù)據(jù),并確保程序的健壯性與用戶(hù)體驗(yàn)。
到此這篇關(guān)于Python中input輸入與While循環(huán)的文章就介紹到這了,更多相關(guān)Python input輸入與While循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django-Xadmin后臺(tái)首頁(yè)添加小組件報(bào)錯(cuò)的解決方案
這篇文章主要介紹了Django-Xadmin后臺(tái)首頁(yè)添加小組件報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Python探索之靜態(tài)方法和類(lèi)方法的區(qū)別詳解
這篇文章主要介紹了Python探索之靜態(tài)方法和類(lèi)方法的區(qū)別詳解,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-10-10
如何利用python多線(xiàn)程爬取天氣網(wǎng)站圖片并保存
最近做個(gè)天 氣方面的APP需要用到一些天氣數(shù)據(jù),所以下面這篇文章主要給大家介紹了關(guān)于如何利用python多線(xiàn)程爬取天氣網(wǎng)站圖片并保存的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11
Python壓縮包處理模塊zipfile和py7zr操作代碼
目前對(duì)文件的壓縮和解壓縮比較常用的格式就是zip格式和7z格式,這篇文章主要介紹了Python壓縮包處理模塊zipfile和py7zr,需要的朋友可以參考下2022-06-06
python numpy創(chuàng)造圖像矩陣示例詳解
這篇文章主要為大家介紹了python numpy創(chuàng)造圖像矩陣示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

