在 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行数据,而程序调用了3次input(),这将使程序在第三次调用input()时抛出EOFError异常;