Python字典平均值计算代码无法正常执行的原因是什么?
错误原因
你的代码在printAverage函数存在两处核心错误,导致平均值计算失败:
- 取值逻辑错误:
sum(grades)直接对字典求和时,Python默认会遍历字典的键(课程名字符串)计算,会直接触发类型错误。要计算成绩总和,需要提取字典的所有值参与计算,写法为sum(grades.values())。 - 计数逻辑错误:
- 代码中的
count是函数对象,直接对函数对象执行int(count)属于类型非法操作,会直接抛出报错 - 即便调用
count(grades)也无法拿到课程数量,你编写的count函数只有打印逻辑,没有返回值,调用后得到的是None,无法参与数值计算
- 代码中的
修正后的参考代码
grades = {} def addGrade(grades): course = input("input course: ") grade = int(input("input grade: ")) grades[course] = grade def printGrades(grades): print("all grades:") for c, grade in grades.items(): print(c + "\t" + str(grade)) # 修正count函数,增加返回值 def count(grades): n = len(grades) print(n) return n def printAverage(grades): sum_grade = sum(grades.values()) course_count = count(grades) # 用f-string避免字符串和数值拼接报错 print(f"average grade:{sum_grade / course_count}")
内容的提问来源于stack exchange,提问作者munano
相关产品推荐
相关产品推荐

