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
处理区间外的返回值。
是否有更好、更有凝聚力的方法来实现 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
处理区间外的返回值。