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

Python计算字母成绩问题:输入任意分数均仅输出F求排查

解决Python字母成绩计算总是输出F的问题

嘿,我完全懂你现在的烦躁——不管输入啥分数,结果清一色都是F,这换谁都得挠头!你怀疑是if语句出了问题,这点猜得太对了,这种情况大概率是条件判断的顺序或者逻辑写反了。

从你给出的代码片段来看,已经把5个分数收集到列表里了,但关键的成绩转换函数没写完。不过根据这类问题的常见坑,我猜你可能写出了类似这样的错误代码:

def calculate_grade(scores):
    average = sum(scores) / len(scores)
    # 错误:先判断了最宽泛的条件
    if average >= 0:
        return 'F'
    elif average >= 60:
        return 'D'
    elif average >= 70:
        return 'C'
    elif average >= 80:
        return 'B'
    elif average >= 90:
        return 'A'

你看,这里先判断了average >= 0——所有分数的平均值肯定都满足这个条件啊!程序直接就返回F了,后面的判断根本没机会执行,这就是为啥不管输入啥都是F的核心原因。

正确的写法应该是这样的

要从最高分数的条件开始往下判断,让程序先检查是否达到A的标准,不满足再依次往下看B、C、D,最后剩下的才是F:

score1=float(input("Enter score 1: "))
score2=float(input("Enter score 2: "))
score3=float(input("Enter score 3: "))
score4=float(input("Enter score 4: "))
score5=float(input("Enter score 5: "))
scores=[score1, score2, score3, score4, score5]

def calculate_grade(scores):
    average = sum(scores) / len(scores)
    if average >= 90:
        return 'A'
    elif average >= 80:
        return 'B'
    elif average >= 70:
        return 'C'
    elif average >= 60:
        return 'D'
    else:
        return 'F'

# 测试输出
print(f"Your letter grade is: {calculate_grade(scores)}")

另外还要排查这两个小问题

  • 有没有忘记计算平均值?比如直接用单个分数判断而不是用5个分数的平均值
  • 条件里的符号是不是写反了?比如把>=写成了<=,也会导致逻辑完全颠倒

把上面的代码替换进去测试,应该就能正常输出对应字母成绩啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:29:31