You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于随机生成的问题判定用户答案正确性并实现计分(Python)

解决数字比较答题的加分逻辑问题

嘿,我来帮你搞定这个数字比较的小游戏逻辑!先梳理下你原代码里的几个小问题,再一步步实现你想要的判断答案正确性并加分的功能:

原代码里的小坑

  • 你的question列表里是["Bigger" , "Smaller"],但后面的条件判断用了"Higher"和"Lower",这会导致永远触发不了任何分支,得统一字符串内容
  • 直接把整数num1/num2和字符串拼接会报错,因为Python不允许整数和字符串直接相加,得把数字转成字符串或者用f-string

完整实现代码

下面是修复问题并实现加分逻辑的完整代码,我加了注释方便你理解:

import random

# 初始化用户的分数,初始为0
user_marks = 0

# 生成两个1到20之间的随机整数
num1 = random.randint(1, 20)
num2 = random.randint(1, 20)

# 随机选择要提问的类型:找更大的数还是更小的数
question_options = ["Bigger", "Smaller"]
selected_question = random.choice(question_options)

# 根据选中的问题类型,确定正确答案并生成提问语句
if selected_question == "Bigger":
    correct_answer = max(num1, num2)  # 直接用max()获取两个数里更大的那个
    user_input = input(f"Please find the Bigger value between {num1} and {num2}: ")
else:
    correct_answer = min(num1, num2)  # 用min()获取两个数里更小的那个
    user_input = input(f"Please find the Smaller value between {num1} and {num2}: ")

# 处理用户输入并判断答案是否正确
try:
    # 把用户输入的字符串转成整数
    user_answer = int(user_input)
    if user_answer == correct_answer:
        user_marks += 1  # 答对就加分
        print(f"Nice job! Correct answer. Your marks are now {user_marks}")
    else:
        print(f"Oops, wrong answer. The correct one is {correct_answer}. Your marks stay at {user_marks}")
except ValueError:
    # 处理用户输入非数字的情况,避免程序崩溃
    print("Wait, please enter a valid whole number!")

关键逻辑说明

  1. 分数初始化:先定义user_marks变量来记录用户分数,初始值设为0
  2. 正确答案获取:用Python内置的max()和min()函数,不用自己写复杂的if判断就能快速得到更大/更小的数,简洁又可靠
  3. 输入处理:用f-string来拼接提问语句,自动把整数转成字符串,比传统的+拼接更方便;同时加了try-except块,防止用户输入非数字导致程序报错
  4. 加分判断:只要用户输入的整数和正确答案一致,就给user_marks加1,并反馈当前分数

可选优化方向

如果想让游戏更完善,还可以加这些功能:

  • 循环让用户多次答题,直到用户选择退出
  • 记录用户的答题正确率
  • 生成不同范围的随机数,增加难度梯度

内容的提问来源于stack exchange,提问作者Lofi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:30:48