如何为Python循环计算题程序添加不重置的计分系统?
为循环式加法计算题程序添加不重置的计分系统
问题场景
以下是一段实现加法计算题的Python代码,但运行时计分无法正确累加,每次错误后打印的分数会重置为0:
from time import sleep total = 0 def calcu(): import random num1 = random.randint(1,20) import random num2 = random.randint(1,100) sum = num1 + num2 answer = int(input("What Is " + str(num1) + " + " + str(num2) + " = ")) if answer == sum: print("Correct\n") sleep(3.00) total = total + 1 calcu() else: print("Incorrect The Correct Answer Is " + str(sum) + "\n") sleep(3.00) print(total) calcu()
问题核心:如何实现一个不会重置的计分系统,让正确答题的分数能持续累加?
解决方案
通过将计分值作为参数传递给递归函数,规避全局变量的作用域问题,确保每次递归调用都能传递最新的分数值。修改后的完整代码如下:
from time import sleep total = 0 def calcu(total): import random num1 = random.randint(1,20) num2 = random.randint(1,20) sum_result = num1 + num2 # 避免使用Python内置关键字sum作为变量名 answer = int(input(f"{num1} + {num2} = ")) if answer == sum_result: print("正确\n") sleep(3.00) total += 1 calcu(total) else: print(f"错误,正确答案是 {sum_result}\n") sleep(3.00) print(f"当前得分:{total}") calcu(total)
关键修改点
- 将
total作为参数传入递归函数calcu(),每次递归时传递更新后的分数,避免全局变量的作用域冲突 - 移除了重复的
import random语句(函数内只需导入一次) - 把变量名
sum改为sum_result,避免与Python内置函数sum重名 - 改用f-string简化输入提示和输出语句,代码更简洁易读
- 优化中文提示语,更符合用户使用习惯
内容的提问来源于stack exchange,提问作者ging freecss
相关产品推荐
相关产品推荐

