网站首页 > 技术教程 正文
对话实录
小白:(挠头)我写Python程序时,如何读取键盘输入的内容呢?
专家:(微笑)这就要用到input功能了,它能轻松实现人机交互,接下来我给你详细讲讲!
input功能基础认知
input函数是Python中用于获取用户输入的内置函数,它会暂停程序的执行,等待用户在控制台输入内容,用户按下回车键后,输入的内容会作为字符串返回给程序。基本用法非常简单:
content = input("请输入一些内容:")
print(f"你输入的内容是:{content}")
运行这段代码,程序会在控制台显示 “请输入一些内容:” 的提示,用户输入内容并回车后,程序会将输入内容打印出来。
PS:input函数返回的都是字符串类型。
常用功能及案例
案例 1:获取用户姓名并打招呼
name = input("请输入你的名字:")
print(f"你好,{name}!欢迎使用本程序。")
案例 2:输入数字进行计算
虽然input返回的是字符串,但我们可以将其转换为数字类型进行计算。例如,实现一个简单的加法计算器:
num1_str = input("请输入第一个数字:")
num2_str = input("请输入第二个数字:")
num1 = float(num1_str)
num2 = float(num2_str)
result = num1 + num2
print(f"{num1} + {num2} 的结果是:{result}")
案例 3:输入密码并验证
在模拟登录等场景中,需要获取用户输入的密码并进行验证。
password = input("请输入密码:")
if password == "123456":
print("密码正确,登录成功!")
else:
print("密码错误,请重新输入。")
案例 4:输入多个数据
有时候我们需要获取用户输入的多个数据,可以通过对input获取的内容进行分割处理。例如,获取用户输入的多个用逗号分隔的数字,然后计算它们的平均值:
input_str = input("请输入多个用逗号分隔的数字:")
num_list = [float(x) for x in input_str.split(",")]
average = sum(num_list) / len(num_list) if num_list else 0
print(f"这些数字的平均值是:{average}")
案例 5:猜数字小游戏
接下来,我们用input函数实现一个经典的猜数字小游戏。程序会随机生成一个 1 到 100 之间的整数,玩家需要通过不断猜测来找到这个数字。每次猜测后,程序会根据玩家的输入给出提示,告知猜测的数字是大了还是小了,直到玩家猜对为止。
import random
print("欢迎来到猜数字游戏!我已经想好了一个1到100之间的数字,快来猜猜看吧!")
target_number = random.randint(1, 100)
guess_count = 0
while True:
try:
user_guess = int(input("请输入你猜测的数字:"))
guess_count += 1
if user_guess < target_number:
print("你猜的数字小了,再试试!")
elif user_guess > target_number:
print("你猜的数字大了,再想想!")
else:
print(f"恭喜你,猜对了!你一共猜了{guess_count}次。")
break
except ValueError:
print("请输入有效的整数!")
案例六 小学生做数学题加减法小游戏
编写一个解答数学题的小游戏。程序会随机从0到100生成5道加减法算式,输入计算结果后有2次机会,答完题后最后统计结果。
import random
def generate_question():
"""生成合法的加减法题目(避免负数和超界)"""
op = random.choice(['+', '-'])
if op == '+':
a = random.randint(0, 100)
b = random.randint(0, 100 - a) # 确保加法不超过100
else:
a = random.randint(10, 100) # 减法至少10开始,减少0的情况
b = random.randint(0, a)
return f"{a} {op} {b} = ", a + b if op == '+' else a - b
def math_game():
correct = 0
total = 5 # 共5道题
print(" 数学小超人挑战赛开始!(0-100加减法,每题2次机会)")
for _ in range(total):
question, answer = generate_question()
chances = 2
while chances > 0:
user_input = input(f"\n第{_ + 1}题:{question}").strip()
# 处理无效输入(非数字)
if not user_input.isdigit():
print(f" 请输入数字!剩余机会:{chances}")
continue # 无效输入不消耗机会
user_answer = int(user_input)
chances -= 1
if user_answer == answer:
print(f" 答对了!正确答案就是{answer}")
correct += 1
break
else:
print(f" 答错了!剩余机会:{chances}")
# 显示正确答案(无论是否答对)
print(f" 本题解析:{question}{answer}")
# 统计结果
print("\n 答题结束!统计如下:")
print(f" 共答题:{total}题")
print(f" 答对:{correct}题 ")
print(f" 正确率:{correct / total * 100:.1f}%")
if __name__ == "__main__":
math_game()
闭坑指南
输入类型转换错误
由于input返回的是字符串,在进行数值计算或其他类型操作时,必须进行类型转换。如果忘记转换,可能会导致程序出错或得到不符合预期的结果。例如:
# 错误示范,直接对字符串进行乘法运算
num1 = input("请输入第一个数字:")
# 这里的乘法会将字符串拼接起来
result = num1 * 10
print(f"结果是:{result}")
#输入数字1 输出为: 如果乘数是成千上万,那字符串多的可是不得了
结果是:1111111111
# 正确示范,先进行类型转换再计算
num1 = input("请输入第一个数字:")
num1 = float(num1)
result = num1 * 10
print(f"结果是:{result}")
进行数值计算前,一定要根据需求使用int、float等函数将字符串转换为合适的数值类型。
输入内容为空
如果用户直接按下回车键,没有输入任何内容,后续代码可能会因为空字符串而出现错误。例如:
user_input = input("请输入内容:")
# 错误示范,直接对空字符串进行索引操作会报错
# first_char = user_input[0]
# 正确示范,先检查输入内容是否为空
if user_input:
first_char = user_input[0]
print(f"输入内容的第一个字符是:{first_char}")
else:
print("你没有输入任何内容。")
在对用户输入内容进行操作前,最好先判断输入是否为空,避免出现异常。
输入提示不明确
如果input函数的提示信息不够清晰,用户可能不知道应该输入什么内容,导致输入不符合程序预期。例如:
# 错误示范,提示不明确
user_input = input("请输入:")
# 正确示范,明确提示输入要求
user_input = input("请输入你的年龄(数字):")
专家工具箱
1. 结合try - except处理输入异常
在进行类型转换时,如果用户输入的内容无法转换为指定类型,会引发异常。可以使用try - except语句来捕获并处理这些异常,使程序更加健壮。例如:
while True:
try:
num = int(input("请输入一个整数:"))
print(f"你输入的整数是:{num}")
break
except ValueError:
print("输入无效,请输入一个有效的整数。")
2. 限制输入长度
有时候我们希望限制用户输入内容的长度,可以在获取输入后进行判断。例如,限制用户输入的用户名长度不能超过 10 个字符:
while True:
username = input("请输入用户名(长度不超过10个字符):")
if len(username) <= 10:
print(f"欢迎你,{username}!")
break
else:
print("用户名长度超过限制,请重新输入。")
3. 实现多行输入
默认情况下,input函数只能获取一行输入。如果需要获取用户的多行输入,可以通过循环结合input来实现。例如,让用户输入一段文本,以空行结束:
lines = []
print("请输入文本(输入空内容结束):")
while True:
line = input()
if line == "":
break
lines.append(line)
text = "\n".join(lines)
print(f"你输入的文本是:\n{text}")
在循环中不断使用input获取用户输入的每一行内容,将其添加到列表中,直到用户输入空行,最后将列表中的内容合并为一段文本。
小白:(恍然大悟)原来input功能有这么多用法和需要注意的地方!
专家:(点头)没错!掌握好input,能让你的程序和用户更好地 “沟通”,快去动手实践一下吧!
input功能速查表
用法 | 说明 |
input(prompt) | prompt为可选参数,用于显示提示信息,函数返回用户输入的字符串 |
int(input(...)) | 将input返回的字符串转换为整数类型 |
float(input(...)) | 将input返回的字符串转换为浮点数类型 |
input().split() | 对input返回的字符串按空格进行分割,返回列表 |
input().split(',') | 对input返回的字符串按逗号进行分割,返回列表 |
猜你喜欢
- 2025-05-02 谈游戏状态机的设计与实现 探讨状态机的扩展性和易用性
- 2025-05-02 算术加减超人:开启智慧与乐趣之旅
- 2025-05-02 “哥俩好”“五魁首”“六六六”行酒令和划拳方式你知道多少
- 2025-05-02 航海王燃烧意志:第三波蓝钻红包“口令答案”,新阵型不太给力
- 2025-05-02 云上行酒令,就地过大年,行酒令何时出现?这些玩法知多少?
- 2025-05-02 一听就懂:用Python做一个超简单的小游戏
- 2025-05-02 数字炸弹游戏程序 用python来实现
- 2025-05-02 5-6岁儿童逆向思维发展与趣味游戏
- 2025-05-02 使用C语言实现多次猜数小游戏(使用c语言实现多次猜数小游戏的方法)
- 2025-05-02 python经典案例:猜数字游戏(python猜数字游戏代码0到9)
你 发表评论:
欢迎- 05-05从virsh当中学习QEMU/KVM启动命令
- 05-05Win10 BCD文件损坏怎么修复?(bcd文件损坏win7)
- 05-05亚马逊春节假期期间的店铺管理设置
- 05-051分钟总结常用k8s常用诊断教程(k8s常见故障)
- 05-05VisiPics重复图片查找软件中文汉化教程
- 05-05微服务的发布实现方式1灰度实现(微服务实现原理)
- 05-05轻松掌握Java多线程 - 第二章:线程的生命周期
- 05-05德拉诺之王邪DK报告:PVE向小测试及分析
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)