Return 基于连续参数的值 python

Return value based on the continous parameter python

是否有更好、更有凝聚力的方法来实现 pace_points 的功能? 伪代码将是:pace return 值的每 x 个数字都降低 y.

下一步伪代码将是:根据某种分布(例如指数),pace return 值的每 x 个较低的值较高。

def pace_points(pace: float):
    if pace >= 6.5:
        return 0.5
    elif 6 <= pace < 6.5:
        return 1
    elif 5.5 <= pace < 6:
        return 2
    elif 5 <= pace < 5.5:
        return 3
    elif 4.5 <= pace < 5:
        return 4
    elif 4.0 <= pace < 4.5:
        return 5
    else:
        return 10

下面以更紧凑的形式表达你的逻辑:

import math

def pace_points(pace):
    p = math.ceil(2*(6.5-pace))
    return 0.5 if p <= 0 else 10 if p > 5 else p

跟进:关注@DanielHao 下面的评论,只是想阐明代码的作用。

  • math.ceil returns 最接近传递参数的 更高 的整数。它不同于 round,它只是 returns 最接近的整数。例如,math.ceil(2.3) 将是 3,round(2.3) 是 2。(math.ceil 的“姐妹”函数是 math.floor,returns 最接近的整数低于传递的参数。
  • math.ceil(2 * (6.5 - pace)) 是 returns 在 (0, 4.5] 区间内的所需值的函数。
  • 最后的if...else...else处理区间外的返回值。