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

如何为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:30:44