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

Python平均分与等级计算器异常:始终输出A等级求助

问题排查与修复建议

1. 全局变量未正确声明

你在calc_average函数中修改testScores时,没有添加global testScores声明,导致函数内部创建了一个局部的testScores变量,而全局的testScores始终保持初始值0。这就意味着determine_grade函数判断的是全局的0,而非你计算出的真实平均分。

2. 条件判断逻辑错误

就算全局变量问题解决,你的等级判断用错了逻辑运算符:所有条件都用了or,比如第一个条件testScores <= 100 or testScores >= 90——只要分数满足任意一个条件就会触发,而正常测试分数必然≤100,所以无论平均分是多少,都会直接进入第一个分支输出"A"。正确逻辑应该用and来限定区间范围。

修正后的代码

testScores = 0

def main():
    calc_average()
    determine_grade()

def calc_average():
    global testScores  # 声明要修改全局变量
    firstTest = float(input('Enter your first score: '))
    secondTest = float(input('Enter your second score: '))
    thirdTest = float(input('Enter your third score: '))
    forthTest = float(input('Enter your forth score: '))
    fifthTest = float(input('Enter your fifth score: '))

    addedTestScores = firstTest + secondTest + thirdTest + forthTest + fifthTest
    testScores = addedTestScores / 5
    print('This is your average: ', testScores)

def determine_grade():
    global testScores
    if 90 <= testScores <= 100:
        print('You have an A')
    elif 80 <= testScores < 90:
        print('You have a B')
    elif 70 <= testScores < 80:
        print('You have a C')
    elif 60 <= testScores < 70:
        print('You have a D')
    else:
        print('You have an E')

main()

额外优化建议

避免使用全局变量,改用函数返回值传递数据,代码更清晰且无副作用:

def main():
    average = calc_average()
    determine_grade(average)

def calc_average():
    scores = []
    for i in range(5):
        score = float(input(f'Enter your {i+1}th score: '))
        scores.append(score)
    average = sum(scores) / 5
    print('This is your average: ', average)
    return average

def determine_grade(average):
    if 90 <= average <= 100:
        print('You have an A')
    elif 80 <= average < 90:
        print('You have a B')
    elif 70 <= average < 80:
        print('You have a C')
    elif 60 <= average < 70:
        print('You have a D')
    else:
        print('You have an E')

main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:12:37