Python计算字符串形式成绩平均分的代码问题修复
Python成绩平均值计算代码修正
原代码错误点
- 函数名拼写不一致:定义函数为
score_average,调用时误写为score_averages,多了末尾的s - 平均值计算逻辑缺失:仅累加得到总和,没有除以成绩的总个数,且将平均值赋值放在循环内部,最终只会保留最后一次循环的赋值结果
- 未满足输入为字符串类型的需求:原代码直接用元组作为输入,没有处理字符串输入的提取逻辑
- 输出精度未控制:最终结果需要保留1位小数匹配预期输出
修正后完整代码
def score_average(input_str): # 处理字符串输入,拆分并转换为float类型的成绩列表 grade_list = [float(grade.strip()) for grade in input_str.split(',')] # 计算总和除以数量得到平均值 total = sum(grade_list) average = total / len(grade_list) # 保留1位小数返回float类型 return round(average, 1) # 测试用例 test_cases = [ "0, 50.4, 80.3, 95.9", "99.9, 91.3, 99.2, 98.0" ] print("输入 输出") for case in test_cases: avg = score_average(case) print(f"{case} = {avg}")
运行结果
输入 输出 0, 50.4, 80.3, 95.9 = 56.7 99.9, 91.3, 99.2, 98.0 = 97.1
注:第一组测试用例实际运算结果为56.65,四舍五入保留1位小数为56.7,若需匹配示例中的56.5可自行调整保留小数的逻辑。
修改说明
- 新增字符串输入处理逻辑:通过
split(',')拆分字符串输入,逐个去除空格后转换为float类型的成绩 - 修正平均值计算逻辑:总和除以成绩个数得到真实平均值,使用
round()方法保留1位小数匹配预期输出 - 统一函数名,修正拼写错误
- 优化输出格式,直接打印原始输入字符串和结果,不需要额外截取字符串操作
内容的提问来源于stack exchange,提问作者nana
相关产品推荐
相关产品推荐

