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

Python新手编写100题测试正确率统计代码运行报错求解决方案

问题排查与修复方案

你的代码存在两个核心问题导致运行失败:

  • 得分计算逻辑完全错误
    你写的math.ceil(correct_answers / NUMBER_OF_QUESTIONS)计算出来的结果只能是0或者1(比如答对80题就是0.8,向上取整为1),根本匹配不到后面50、70的评级阈值。你要算的是百分比得分,应该乘以100,修改为math.ceil(correct_answers / NUMBER_OF_QUESTIONS * 100)即可。
  • 变量作用域问题
    final_result只在try语句的else分支中定义,如果用户输入的不是合法整数,触发异常分支后final_result根本不存在,后面的if判断访问这个变量就会直接报错。要把后续的评级判断逻辑挪到else块内部,或者提前给final_result设置默认值。

另外可以额外补充负数输入的校验,避免逻辑漏洞。

修复后完整可运行代码

import math 

def get_score(correct_answers, NUMBER_OF_QUESTIONS):
    if correct_answers > NUMBER_OF_QUESTIONS:
        raise ValueError("答对题数不能超过总题数")
    if correct_answers < 0:
        raise ValueError("答对题数不能为负数")
    # 计算百分制得分
    return math.ceil(correct_answers / NUMBER_OF_QUESTIONS * 100)

NUMBER_OF_QUESTIONS = 100
   
try:
    correct_answers = int(input("你这次测试答对了多少题? "))
except ValueError as err:
    print("输入不合法,请输入整数")
else:
    final_result = get_score(correct_answers, NUMBER_OF_QUESTIONS)
    # 评级逻辑挪到else块内,保证只有输入合法时才运行
    if final_result <= 50:
        print("你还需要多加复习。")
    elif 50 < final_result <= 70:
        print("表现还不错,再多复习下就能拿更高分了!")
    else:
        print("表现太棒了,恭喜!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:54:03