分享免费的编程资源和教程

网站首页 > 技术教程 正文

Python的input函数轻松实现猜数字,做数学题等小游戏,有意思!

goqiw 2025-05-02 10:19:32 技术教程 10 ℃ 0 评论

对话实录

小白:(挠头)我写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返回的字符串按逗号进行分割,返回列表

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表