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

Python答题程序扣分逻辑失效求助:答错扣分但分数循环重置

解决答题程序分数循环重置问题

你的问题核心是score变量的作用域错误——把它定义在了for循环内部,导致每次循环都会重新初始化,之前的扣分记录被清空,自然最多只能扣1分。

解决方案

把score的初始化代码移到for循环外部,让变量在整个循环周期内保持唯一实例,分数修改会持续累积。

示例代码(正确写法)

# 初始化分数在循环外,仅执行一次
score = 10
# 模拟题目列表
questions = [
    {"content": "1+1=?", "answer": "2"},
    {"content": "3*5=?", "answer": "15"},
    {"content": "10/2=?", "answer": "5"}
]

for q in questions:
    user_answer = input(q["content"] + " ")
    if user_answer != q["answer"]:
        score -= 1  # 扣分操作作用于外部定义的score
        print(f"答错!当前分数:{score}")
    else:
        print(f"答对!当前分数:{score}")

print(f"最终得分:{score}")

错误写法对比(为什么会重置)

如果把score放在循环内,每次循环都会重新赋值,之前的扣分完全无效:

questions = [{"content": "1+1=?", "answer": "2"}, ...]

for q in questions:
    score = 10  # 每次循环都重置为初始值,扣分只在本次循环生效
    user_answer = input(q["content"] + " ")
    if user_answer != q["answer"]:
        score -= 1

额外注意事项

  • 避免在循环内部再次定义score变量(比如不要写score = ...),否则会覆盖外部的变量。
  • 如果程序采用函数拆分实现,可通过函数返回值传递更新后的分数,或者将score作为参数传入(不推荐滥用全局变量)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:54:54