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
相关产品推荐
相关产品推荐

