如何将平均分传入grades函数避免报错?Python成绩分析器问题
解决Python成绩分析程序中函数调用的参数传递问题
你报错的核心原因是:调用grades(getAvg)时,传递的是函数对象getAvg本身,而不是getAvg执行后返回的平均分数值。grades函数需要的是一个数值参数,直接传函数对象会导致类型不匹配错误。
下面是修正后的完整代码示例,实现你需要的功能:
1. 定义计算平均分的getAvg函数
def getAvg(): # 获取用户输入的成绩,按空格拆分并转换为浮点型列表 score_str = input("请输入学生成绩,用空格分隔:") scores = [float(s) for s in score_str.split() if s.replace('.', '', 1).isdigit()] if not scores: print("未检测到有效成绩,默认平均分0") return 0.0 return sum(scores) / len(scores)
2. 定义判断等级的grades函数
def grades(average): if average >= 90: return 'A' elif average >= 80: return 'B' elif average >= 70: return 'C' elif average >= 60: return 'D' else: return 'F'
3. 正确的调用方式
你需要先执行getAvg()得到平均分结果,再将这个结果传入grades函数:
# 先获取平均分 average_score = getAvg() # 传入grades函数获取等级 grade = grades(average_score) print(f"平均分:{average_score:.1f},对应等级:{grade}")
或者可以简化为链式调用:
print(f"对应等级:{grades(getAvg())}")
测试示例:输入78,程序会输出对应等级:C,符合你的需求。
内容的提问来源于stack exchange,提问作者laith maree
相关产品推荐
相关产品推荐

