Python 中的 input() 函數詳解:新手指南
更新日期: 2024 年 9 月 24 日
在 Python 編程中,input() 函數 是一個非常重要且常用的函數,用於從用戶獲取輸入。
對於剛開始學習 Python 的新手來說,理解並掌握 input() 函數的用法,將大大提升你與程式互動的能力。
本文將詳細介紹 Python 中的 input() 函數,包括其基本用法、進階技巧和常見錯誤,並提供豐富的示例,幫助你在實際開發中靈活運用。
什麼是 input() 函數?
input() 函數是 Python 的內建函數,用於從標準輸入(通常是鍵盤)讀取一行文字,並將其作為字串返回。
這使得你的程式可以與用戶互動,根據用戶的輸入進行不同的操作。
基本語法:
input(prompt)
prompt
(可選):一個字串,作為提示訊息,顯示給用戶。
input() 函數的基本用法
獲取用戶輸入
name = input("請輸入您的名字:")
print(f"你好,{name}!")
輸出:
請輸入您的名字:小明
你好,小明!
解釋:
- input(“請輸入您的名字:”)
- 顯示提示訊息「請輸入您的名字:」,等待用戶輸入。
- 用戶輸入 小明,按下 Enter。
- input() 函數返回字串 ‘小明’,並賦值給變數 name。
注意返回值的類型
- input() 函數總是返回字串。
- 即使用戶輸入的是數字,返回值也是字串。
示例:
age = input("請輸入您的年齡:")
print(type(age))
輸出:
請輸入您的年齡:25
<class 'str'>
將輸入轉換為其他數據類型
由於 input() 返回的值是字串,如果需要將其作為數字進行計算,需要進行類型轉換。
轉換為整數 int()
示例:
age = input("請輸入您的年齡:")
age = int(age)
print(f"明年您將是 {age + 1} 歲。")
輸出:
請輸入您的年齡:25
明年您將是 26 歲。
轉換為浮點數 float()
示例:
height = input("請輸入您的身高(公尺):")
height = float(height)
print(f"您的身高是 {height} 公尺。")
輸出:
請輸入您的身高(公尺):1.75
您的身高是 1.75 公尺。
合併步驟
為了代碼更簡潔,可以將類型轉換和輸入放在同一行。
示例:
age = int(input("請輸入您的年齡:"))
print(f"明年您將是 {age + 1} 歲。")
處理輸入時的錯誤
1. 當輸入的值無法轉換為數字時
如果用戶輸入的內容無法轉換為數字,直接進行類型轉換會引發 ValueError。
示例:
age = int(input("請輸入您的年齡:"))
輸入:
請輸入您的年齡:abc
錯誤訊息:
ValueError: invalid literal for int() with base 10: 'abc'
使用 try…except 捕獲異常
為了提高程式的健壯性,可以使用 try…except 來處理可能的錯誤。
示例:
try:
age = int(input("請輸入您的年齡:"))
print(f"明年您將是 {age + 1} 歲。")
except ValueError:
print("請輸入有效的數字。")
輸入:
請輸入您的年齡:abc
輸出:
請輸入有效的數字。
實際應用示例
計算兩個數的和
try:
num1 = float(input("請輸入第一個數字:"))
num2 = float(input("請輸入第二個數字:"))
total = num1 + num2
print(f"兩個數的和是:{total}")
except ValueError:
print("請確保輸入的是數字。")
BMI 計算器
try:
height = float(input("請輸入您的身高(公尺):"))
weight = float(input("請輸入您的體重(公斤):"))
bmi = weight / (height ** 2)
print(f"您的 BMI 指數為:{bmi:.2f}")
except ValueError:
print("請輸入有效的數字。")
except ZeroDivisionError:
print("身高不能為零。")
輸入:
請輸入您的身高(公尺):1.75
請輸入您的體重(公斤):68
輸出:
您的 BMI 指數為:22.20
簡易計算機
try:
num1 = float(input("請輸入第一個數字:"))
operator = input("請輸入運算符(+、-、*、/):")
num2 = float(input("請輸入第二個數字:"))
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
result = num1 / num2
else:
print("無效的運算符。")
exit()
print(f"計算結果:{result}")
except ValueError:
print("請輸入有效的數字。")
except ZeroDivisionError:
print("除數不能為零。")
常見錯誤與注意事項
忘記將輸入轉換為數字
問題:
num = input("請輸入一個數字:")
print(num * 2)
輸入:
請輸入一個數字:5
輸出:
55
解釋:
- 由於 input() 返回的是字串,「5」 * 2 的結果是 「55」,而非數字 10。
解決方案:
num = int(input("請輸入一個數字:"))
print(num * 2)
處理空輸入
問題:
- 如果用戶直接按下 Enter,不輸入任何內容,可能會導致錯誤。
解決方案:
- 在進行類型轉換前,檢查輸入是否為空。
user_input = input("請輸入您的年齡:")
if user_input.strip() == '':
print("輸入不能為空。")
else:
age = int(user_input)
print(f"您的年齡是 {age} 歲。")
使用 eval() 的風險
- 有些開發者可能會使用 eval() 來直接將輸入轉換為數字,但這存在安全風險。
不建議的做法:
value = eval(input("請輸入一個數字:"))
問題:
- eval() 會執行輸入的內容,如果用戶輸入惡意代碼,可能導致安全問題。
建議:
- 使用 int() 或 float() 進行明確的類型轉換,並使用 try…except 進行錯誤處理。
總結
- input() 函數 用於從用戶獲取輸入,返回字串。
- 類型轉換:將輸入的字串轉換為所需的數據類型,如整數或浮點數。
- 錯誤處理:使用 try…except 來捕獲可能的異常,提高程式的健壯性。
- 實際應用:input() 函數廣泛應用於需要與用戶互動的程式,如計算機、遊戲等。