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

