如何基于随机生成的问题判定用户答案正确性并实现计分(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!")
关键逻辑说明
- 分数初始化:先定义
user_marks变量来记录用户分数,初始值设为0 - 正确答案获取:用Python内置的
max()和min()函数,不用自己写复杂的if判断就能快速得到更大/更小的数,简洁又可靠 - 输入处理:用f-string来拼接提问语句,自动把整数转成字符串,比传统的
+拼接更方便;同时加了try-except块,防止用户输入非数字导致程序报错 - 加分判断:只要用户输入的整数和正确答案一致,就给
user_marks加1,并反馈当前分数
可选优化方向
如果想让游戏更完善,还可以加这些功能:
- 循环让用户多次答题,直到用户选择退出
- 记录用户的答题正确率
- 生成不同范围的随机数,增加难度梯度
内容的提问来源于stack exchange,提问作者Lofi
相关产品推荐
相关产品推荐

