Python input 函数
上次修改时间:2025 年 4 月 11 日
这个全面的指南探索了 Python 的 input
函数,它从控制台读取用户输入。我们将涵盖基本用法、类型转换、输入验证和交互式程序的实际例子。
基本定义
input
函数从标准输入读取一行,并将其作为字符串返回(不带尾随换行符)。它可以显示一个可选的提示消息来引导用户。
主要特点:总是返回一个字符串,阻塞程序执行直到收到输入,如果输入被终止(Ctrl+D/Z),则引发 EOFError。
基本输入用法
这是一个简单的用法,展示了如何使用带和不带提示消息来获取用户输入。输入总是作为字符串返回。
# Simple input without prompt name = input() print(f"Hello, {name}!") # Input with prompt age = input("Enter your age: ") print(f"You are {age} years old.")
这个例子演示了使用 input
的两种主要方式。第一个读取没有任何提示的输入,而第二个显示一条消息。
记住,即使用户输入数字,input
总是将它们作为字符串返回。你需要转换它们才能进行数值运算。
类型转换
由于 input
返回字符串,我们经常需要将它们转换为其他类型。这个例子展示了安全的转换技术。
# Convert to integer try: num = int(input("Enter a number: ")) print(f"Double: {num * 2}") except ValueError: print("Please enter a valid integer!") # Convert to float try: price = float(input("Enter price: ")) print(f"Total with tax: {price * 1.2:.2f}") except ValueError: print("Please enter a valid number!")
这些例子演示了使用 try-except 块进行安全类型转换。这可以防止用户输入无法转换的无效数据时崩溃。
浮点数例子还显示了货币值格式化的两位小数输出。
输入验证
对于健壮的程序,我们经常需要验证输入,如果无效则再次询问。这个例子展示了一个连续验证的模式。
while True: age_input = input("Enter your age (1-120): ") if age_input.isdigit(): age = int(age_input) if 1 <= age <= 120: break print("Invalid age. Please try again.") print(f"Your age is: {age}")
这段代码重复要求输入,直到提供一个介于 1 和 120 之间的有效年龄。它首先检查输入是否只包含数字。
该验证结合了多项检查:数字检查、范围检查和转换安全性。这创建了一个健壮的输入机制。
多个输入
我们可以通过分割输入字符串一次处理多个输入。这个例子展示了如何处理空格分隔的值。
# Get multiple numbers on one line nums_input = input("Enter 3 numbers separated by spaces: ") nums = nums_input.split() if len(nums) == 3: try: a, b, c = map(float, nums) print(f"Sum: {a + b + c}") except ValueError: print("Please enter valid numbers!") else: print("Please enter exactly 3 numbers.")
这个例子接受一个输入中的三个数字。split
方法按空格分割字符串,map
转换所有值。
代码包括对输入数量及其可转换为数字的验证,使其能够应对各种错误。
密码输入
对于密码等敏感输入,我们可以使用 getpass
模块隐藏打字,该模块的工作方式与 input
类似。
from getpass import getpass username = input("Username: ") password = getpass("Password: ") if username == "admin" and password == "secret": print("Access granted") else: print("Access denied")
getpass
函数隐藏用户输入,这对于密码输入至关重要。它在输入时在控制台中不可见。
请注意,在某些 IDE 中,getpass
可能无法按预期工作,并可能回退到常规输入。它在终端环境中效果最佳。
最佳实践
- 始终验证: 永远不要相信原始输入数据
- 使用清晰的提示: 使用明确的说明来指导用户
- 处理转换: 使用 try-except 安全地转换类型
- 考虑 getpass: 对于密码等敏感信息
- 提供反馈: 通知用户有关无效输入
资料来源
作者
列出所有 Python 教程。