【问题标题】:Return value based on the continous parameter python基于连续参数python的返回值
【发布时间】:2021-12-26 04:21:01
【问题描述】:

有没有更好、更有凝聚力的方法来实现pace_points 的功能? 伪代码将是:pace 的每个 x 小数返回值高 y。

下一步的伪代码将是:pace 每降低一个 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

【问题讨论】:

    标签: python statistics distribution


    【解决方案1】:

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

    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 返回与传递的参数最接近的整数更高。它与round 不同,后者只返回最接近的整数。例如,math.ceil(2.3) 将是 3,round(2.3) 是 2。(math.ceil 的“姐妹”函数是 math.floor,它返回小于传递参数的最接近的整数。
    • math.ceil(2 * (6.5 - pace)) 是一个在 (0, 4.5] 区间内返回所需值的函数。
    • 最终的if...else...else 负责处理区间外的返回值。

    【讨论】:

    • 对于初学者来说,详细说明math.ceil .... 部分会更好。点赞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 2014-05-11
    相关资源
    最近更新 更多