You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:22:22