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() 函數廣泛應用於需要與用戶互動的程式,如計算機、遊戲等。

延伸閱讀

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *