你是否在写Python脚本时,需要和用户“对话”?比如让用户输入名字、选择选项,甚至输入密码?
这时候,input()函数就是你的“好帮手”!但你知道吗?这个看似简单的函数,藏着不少“坑”和技巧。
今天,我们就来深扒input(),从基础用法到避坑指南,让你彻底玩转用户输入!
1. 基础用法:一句话搞定用户输入input()的作用很简单:让程序暂停,等待用户输入内容,按回车后继续执行。输入的内容会以字符串形式返回,无论你输入的是数字、字母还是符号。
name = input("请告诉我你的名字:") print(f"你好,{name}!欢迎来到Python世界!") 划重点:
括号内的文字是提示语(比如“请输入年龄:”),可以省略。用户输入的内容永远是字符串,即使输入的是数字!2. 类型转换:把“字符串”变成你想要的样子想要将输入的内容转为整数、浮点数,甚至列表?手动转换是关键!
示例1:输入年龄并计算出生年份
age = int(input("请输入你的年龄:")) birth_year = 2025 - age print(f"你出生于{birth_year}年!") 示例2:输入价格并计算总价
price = float(input("苹果单价:")) total = price * 5 print(f"5斤苹果总价:{total}元") ⚠️ 避坑提醒:
如果用户输入了非数字内容(比如“abc”),int()或float()会报错!
解决方案:用try-except捕获异常,友好提示用户。
try: num = int(input("请输入一个整数:")) except ValueError: print("输入无效,请输入数字哦!") 3. 避坑指南:这些“雷区”千万别踩 雷区1:Python 2和Python 3的差异
Python 3:input()直接返回字符串。Python 2:input()会执行用户输入的内容(相当于eval(raw_input())),可能导致代码注入! 一句话建议:用Python 3,并忘掉Python 2的input()!
雷区2:千万别用eval()处理输入!
# 危险操作!用户输入恶意代码会直接执行! result = eval(input("请输入表达式:")) 如果用户输入__import__('os').system('rm -rf /'),你的系统可能就凉了!
替代方案:用类型转换(如int())或安全解析方法。
4. 实战技巧:处理复杂输入 场景1:用户输入多个值
比如输入两个数字,用空格分隔:
a, b = map(int, input("请输入两个数字(空格分隔):").split()) print(f"两数之和:{a + b}") 场景2:输入列表(如1,2,3,4)
numbers = list(map(int, input("请输入逗号分隔的数字:").split(','))) print(f"你输入的列表是:{numbers}") 场景3:输入密码(隐藏显示)
用getpass模块隐藏输入内容:
from getpass import getpass password = getpass("请输入密码:") print("密码已接收!") 5. 提升用户体验:细节决定成败 技巧1:自动去除首尾空格
city = input("请输入城市:").strip() if not city: print("输入不能为空!") 技巧2:循环验证输入合法性
while True: choice = input("是否继续?(y/n): ").lower().strip() if choice in ['y', 'n']: break print("输入无效,请重新输入!") 6. 最佳实践总结1️⃣ 永远不要相信用户的输入:验证类型、范围,甚至长度!2️⃣ 异常处理是必须的:用try-except捕获ValueError等错误。3️⃣ 避免使用eval:除非你完全控制输入来源。4️⃣ 清晰的提示语:让用户知道该输入什么,减少错误。
input()看似简单,却藏着许多细节。掌握这些技巧,你的代码不仅能更健壮,用户体验也会直线上升! 下次写交互式程序时,不妨试试这些方法,让你的Python技能更上一层楼!你在使用input()时踩过哪些坑?欢迎留言分享!
转发给需要的朋友,一起告别输入BUG!