Python成绩取整问题:将成绩四舍五入至5的倍数,现有代码出错求助
代码问题排查与修正
需求明确
将学生成绩取整到最近的5的倍数,当成绩与目标倍数的差值≤2时使用取整后的成绩;输入23时期望输出25。
原代码问题点
- 变量大小写不统一:Python是大小写敏感语言,代码中先定义
Grade,后续却用grade,会触发变量未定义错误。 input()用法错误:input(23)不符合语法,input()的参数是提示字符串,若直接赋值成绩23,应写为grade = 23;若从输入获取成绩,需转为整数类型:grade = int(input("请输入成绩:"))。- 取整逻辑错误:
(((grade/5)+1)*5)用浮点除法会导致计算偏差(比如23/5=4.6,加1后乘5得到28,而非期望的25),应改用整数除法(grade // 5 + 1) * 5实现向上取整到下一个5的倍数。 - 变量定义错误:
New_grade = (Round_grade - grade)计算的是差值,而非取整后的成绩,完全偏离需求。 - 条件判断逻辑错误:
(New_grade - grade) <=2的计算无意义,实际应判断取整后的成绩与原成绩的差值是否≤2。 - 语法错误:Python关键字
if、else需小写;语句结尾不能用分号,需用冒号;print首字母要小写;else块的括号用法错误,执行语句需缩进。
修正后的代码
grade = 23 # 也可通过输入获取:grade = int(input("请输入成绩:")) next_multiple = ((grade // 5) + 1) * 5 prev_multiple = (grade // 5) * 5 # 判断最近的5的倍数与原成绩的差值是否≤2 if (next_multiple - grade) <= 2: print(next_multiple) elif (grade - prev_multiple) <= 2: print(prev_multiple) else: print(grade)
输入23时,next_multiple为25,差值为2,满足条件,输出25,符合需求。
内容的提问来源于stack exchange,提问作者sez222
相关产品推荐
相关产品推荐

