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

Python 3分数转字母等级转换器输出异常:出现None值问题求助

解决分数转字母等级的重复输出问题

嘿,我来帮你搞定这个小bug!咱们先拆解下问题出在哪儿:

你代码里的letter_grade = print(grade_converter(grade))是核心问题——print()函数本身不会返回任何有效内容(它的返回值固定是None)。这行代码会先执行grade_converter(grade)得到正确的字母等级,然后通过print()把等级直接输出,接着把print()返回的None赋值给letter_grade,最后你又打印了包含letter_grade的句子,所以才会出现“先输出字母等级,再输出Your letter grade is None!”的重复输出情况。

修正后的代码

grade = int(input("Please enter what you made on the test here:"))

def grade_converter(grade):
    if grade >= 94 and grade <= 100:
        return "A"
    elif grade >= 90 and grade < 94:
        return "A-"
    elif grade >=87 and grade < 90:
        return "B+"
    elif grade >= 84 and grade < 87:
        return "B"
    elif grade >= 80 and grade < 84:
        return "B-"
    elif grade >= 77 and grade < 80:
        return "C+"
    elif grade >= 74 and grade < 77:
        return "C"
    elif grade >= 70 and grade < 74:
        return "C-"
    elif grade >= 67 and grade < 70:
        return "D+"
    elif grade >= 64 and grade < 67:
        return "D"
    elif grade >= 61 and grade < 64:
        return "D-"
    else:
        return "F"

# 先获取转换后的字母等级,再统一打印成你想要的格式
letter_grade = grade_converter(grade)
print(f"Your letter grade is {letter_grade}!")

关键修改说明

  • 去掉了print()对grade_converter(grade)的包裹,直接把函数返回的字母等级赋值给letter_grade,避免提前输出等级
  • 最后一行改用了Python3.6+推荐的f-string格式化输出,比字符串拼接更简洁易读(如果习惯原写法,用"Your letter grade is " + str(letter_grade) + "!"也完全可行)

这样修改后,程序就只会输出一次你预期的Your letter grade is (对应字母等级)!,完全符合需求啦。

内容的提问来源于stack exchange,提问作者J. Sparks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:25:58