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

如何使用Python实现健身周里程积分的梯度累进计算

健身可穿戴设备周里程积分计算代码修复

原代码存在的核心问题

  • 区间判断逻辑完全错误:原代码使用0 > distance < 32这类链式判断,等价于要求同时满足0>distance和distance<32,只有输入负里程才会进入第一个分支,完全不符合区间匹配的需求,且遗漏了32km、40km、48km三个边界值的判断
  • 累进计分规则实现错误:梯度累进要求仅对落在对应区间的超出里程计分,原代码直接用总里程乘区间单价,计算结果完全不符合规则
  • 函数结构不合理:函数定义了入参但内部又重复获取输入,套了无退出条件的死循环,且没有返回值,调用后会额外打印None

积分计算逻辑梳理

梯度计分按区间分段累加,各段固定积分数值提前明确:

  • 周里程≤32km:积分为0
  • 32km<里程≤40km:超出32km的部分每km计325分,该区间满额(跑满40km)可拿8*325=2600分
  • 40km<里程≤48km:超出40km的部分每km计550分,该区间满额(跑满48km)可拿8*550=4400分,累计总积分7000分
  • 里程>48km:超出48km的部分每km计600分

修正后可运行代码

def calculate_fitness_points(distance):
    if distance < 0:
        raise ValueError("里程数值不能为负")
    # 第一区间:0-32km
    if distance <= 32:
        return 0
    # 第二区间:33-40km
    if distance <= 40:
        return (distance - 32) * 325
    # 前两区间满额积分2600,计算第三区间:41-48km
    section2_full = 8 * 325
    if distance <= 48:
        return section2_full + (distance - 40) * 550
    # 前三区间满额积分7000,计算第四区间:48km以上
    section3_full = 8 * 550
    return section2_full + section3_full + (distance - 48) * 600

if __name__ == "__main__":
    while True:
        user_input = input("请输入周里程(单位:Km,输入q退出程序):")
        if user_input.lower() == "q":
            break
        try:
            distance = int(user_input)
            points = calculate_fitness_points(distance)
            print(f"对应健身积分:{points}")
        except ValueError:
            print("输入无效,请输入正整数里程值,或输入q退出")

结果验证

输入不同里程的计算结果如下:

  • 输入32 → 输出0,符合规则
  • 输入40 → 输出2600,符合规则
  • 输入48 → 输出7000,符合规则
  • 输入50 → 输出8200,符合规则

内容的提问来源于stack exchange,提问作者riko chua

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:39:31