在 Python 中,input()是一个内置函数,该函数从标准输入读取用户的输入,并以字符串形式返回输入的内容。

函数语法

input([prompt])

参数:

  • prompt:可选参数,显示给用户的提示信息;

用户输入的任何内容都以字符串的形式返回,不包含换行符。

input() 函数示例

以下代码将提示用户输入他们的名字,并将其存储在变量name中:

name = input("What's your name? ")
print(f"Hello, {name}!")

程序运行效果

What's your name? Jack Chan
Hello, Jack Chan!

input()函数总是返回字符串,对于数字需要进行类型转换:

number = int(input()) # 整数
number = float(input()) # 浮点数

转换为布尔值:

answer = input("是否继续? (y/n): ").lower()
continue_flag = answer == 'y' or answer == 'yes'  # 转换为布尔值
print(f"继续: {continue_flag}")

程序运行结果

是否继续? (y/n): yes
继续: True

输入多个值:

numbers = input("请输入多个数字(用空格分隔): ")

# 转换为整数列表
int_list = [int(num) for num in numbers.split()]
print(f"转换为整数: {int_list}")

安全的输入

更多的时候,需要考虑用户的输入是否合法:

number = int(input("请输入一个数字: "))
print(number)
请输入一个数字: a
Traceback (most recent call last):
  File "D:\hocn\Desktop\t.py", line 1, in <module>
    number = int(input("请输入一个数字: "))
             ^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'a'

用户可能不按提示输入了一个非法值,如果程序没有考虑这点,会造成程序意外退出;

更安全的做法:

while True:
    try:
        number = int(input("请输入一个整数: "))
        print(f"你输入的是: {number}")
        break
    except ValueError:
        print("输入错误,请重新输入整数!")

EOFError 处理

input()函数读取到EOF(表示文件已结束)时,会触发EOFError,这尝发生在以输入重定向的形式运行程序时;例如:

# 程序需要 3 行数据
a = input()
b = input()
c = input()

print(a,b,c)

将以下内容保存到data.txt

1
2

以输入重定向的方式运行程序:

python main.py < data.txt

由于data.txt文件中只有2行数据,而程序调用了3input(),这将使程序在第三次调用input()时抛出EOFError异常;