Python中input輸入與While循環(huán)超詳細(xì)講解
一、用戶輸入:input()函數(shù)的全面解析
1. input()的基礎(chǔ)用法
功能:暫停程序執(zhí)行,等待用戶輸入文本,并以字符串形式返回輸入內(nèi)容。
示例:獲取用戶姓名并輸出問(wèn)候語(yǔ)
name = input("請(qǐng)輸入你的姓名:") #用戶輸入"張三" print(f"你好,{name}!") #輸出:你好,張三!
關(guān)鍵點(diǎn):
無(wú)論用戶輸入數(shù)字、符號(hào)還是文字,input()始終返回字符串。
提示語(yǔ)可包含說(shuō)明信息,引導(dǎo)用戶輸入符合要求的數(shù)據(jù)。
2. 數(shù)值輸入與類型轉(zhuǎn)換
問(wèn)題:用戶輸入的數(shù)字會(huì)被視為字符串,無(wú)法直接用于數(shù)學(xué)運(yùn)算。
解決方案:使用`int()`或`float()`將字符串轉(zhuǎn)換為數(shù)值類型。
# 示例:計(jì)算圓的周長(zhǎng)(需半徑為數(shù)值) radius_str = input("請(qǐng)輸入圓的半徑:") # 用戶輸入"5" radius = float(radius_str) # 轉(zhuǎn)換為浮點(diǎn)數(shù) circumference = 2 * 3.14 * radius print(f"周長(zhǎng)為:{circumference}") # 輸出:周長(zhǎng)為:31.4
注意:若用戶輸入非數(shù)值內(nèi)容(如字母),轉(zhuǎn)換會(huì)報(bào)錯(cuò),需用`try-except`處理(見(jiàn)后文錯(cuò)誤處理)。
3. 字符串拼接與+=運(yùn)算符
功能:+=用于將一個(gè)字符串追加到另一個(gè)字符串末尾,等價(jià)于變量 = 變量 + 字符串。
# 示例:逐行收集用戶輸入并拼接 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)建多行文本、日志記錄、用戶輸入?yún)R總等。
二、while循環(huán):條件驅(qū)動(dòng)的重復(fù)執(zhí)行
1. while循環(huán)的基本結(jié)構(gòu)
語(yǔ)法:
while 條件表達(dá)式: 循環(huán)體代碼 # 條件為True時(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)
用于在滿足特定條件時(shí)立即終止循環(huán),跳出整個(gè)循環(huán)體。
# 示例:用戶輸入"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)條件始終為True,且無(wú)break語(yǔ)句,循環(huán)會(huì)無(wú)限執(zhí)行(需手動(dòng)終止,如Ctrl+C)。
解決方案:
確保循環(huán)體內(nèi)有修改循環(huán)條件的代碼(如`num += 1`)。
添加break作為退出條件(如用戶輸入特定值)。
# 錯(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ù)用戶輸入動(dòng)態(tài)添加元素,或遍歷列表時(shí)修改列表(`for`循環(huán)遍歷列表時(shí)不建議修改)。
示例:收集用戶輸入的多個(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 = ["蘋果", "香蕉", "蘋果", "橘子"] while "蘋果" in fruits: # 循環(huán)條件:列表中存在"蘋果" fruits.remove("蘋果") print("刪除后的列表:", fruits) # 輸出:['香蕉', '橘子']
2. 字典:動(dòng)態(tài)構(gòu)建鍵值對(duì)
場(chǎng)景:逐個(gè)輸入鍵值對(duì),構(gòu)建用戶信息字典。
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("用戶信息:", 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)題:用戶輸入非數(shù)值內(nèi)容時(shí),`int(input())`會(huì)拋出`ValueError`。
解決方案:用`try-except`捕獲異常,提示用戶重新輸入。
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)輸入用戶名(非空):").strip() if not username: # 空字符串為False print("用戶名不能為空!") continue # 跳過(guò)本次循環(huán),重新輸入 if len(username) < 3: print("用戶名至少3個(gè)字符!") continue print(f"歡迎,{username}!") break
七、常見(jiàn)錯(cuò)誤與注意事項(xiàng)
1. 無(wú)限循環(huán)
原因:循環(huán)條件始終為True且無(wú)`break`,或忘記更新循環(huán)變量。
調(diào)試技巧:在循環(huán)體內(nèi)添加`print(循環(huán)變量)`,觀察變量是否按預(yù)期變化。
2. 類型錯(cuò)誤
原因:未將`input()`結(jié)果轉(zhuǎn)換為數(shù)值類型,直接用于數(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ù) | 獲取用戶輸入,返回字符串,需配合類型轉(zhuǎn)換處理數(shù)值 | 計(jì)算器輸入、用戶注冊(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)增刪元素,處理用戶輸入的不確定數(shù)據(jù) | 購(gòu)物車商品管理、用戶信息動(dòng)態(tài)存儲(chǔ) |
數(shù)值運(yùn)算 | 求模判斷奇偶性、累加/累乘計(jì)算 | 統(tǒng)計(jì)總分、計(jì)算階乘 |
錯(cuò)誤處理 | 捕獲輸入異常,驗(yàn)證數(shù)據(jù)有效性 | 防止程序因用戶錯(cuò)誤輸入崩潰 |
通過(guò)掌握以上內(nèi)容,可靈活運(yùn)用用戶輸入和while循環(huán)構(gòu)建交互式程序,處理動(dòng)態(tài)數(shù)據(jù),并確保程序的健壯性與用戶體驗(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-08Python探索之靜態(tài)方法和類方法的區(qū)別詳解
這篇文章主要介紹了Python探索之靜態(tài)方法和類方法的區(qū)別詳解,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-10-10如何利用python多線程爬取天氣網(wǎng)站圖片并保存
最近做個(gè)天 氣方面的APP需要用到一些天氣數(shù)據(jù),所以下面這篇文章主要給大家介紹了關(guān)于如何利用python多線程爬取天氣網(wǎng)站圖片并保存的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11Python壓縮包處理模塊zipfile和py7zr操作代碼
目前對(duì)文件的壓縮和解壓縮比較常用的格式就是zip格式和7z格式,這篇文章主要介紹了Python壓縮包處理模塊zipfile和py7zr,需要的朋友可以參考下2022-06-06python numpy創(chuàng)造圖像矩陣示例詳解
這篇文章主要為大家介紹了python numpy創(chuàng)造圖像矩陣示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08