下面是什么样的蟒蛇疗法?
我在读一个分辨率为0.5的温度传感器。我需要写它(它有一个可编程的恒温器输出),也与.5分辨率。
所以我编写了这个函数(python 2.7),将一个float四舍五入为最接近的输入。5:

def point5res(number):
    decimals = number - int(number)
    roundnum = round(number, 0)
    return roundnum + .5 if .25 <= decimals < .75 else roundnum

print point5res (6.123)

print point5res(6.25)

print point5res(6.8)

工作正常,分别输出6.0、6.5和7.0。这正是我想要的。
我对Python比较陌生。这条线
return roundnum + .5 if .25 <= decimals < .75 else roundnum

让我流着口水,对IT实施者表示钦佩。但这是蟒蛇吗?
编辑:自从发帖以来,我学到了更多关于what is and isn't 'Pythonic'的知识。我的代码不是。下面是cmd的anwwer。谢谢您!

最佳答案

如果你保持简单的表达方式,他们被认为是蟒蛇,否则就很难阅读。
我将四舍五入到最接近的0.5,如下所示:

round(number*2) / 2.0

或者更一般地说:
def roundres(num, res):
    return round(num / res) * res

10-06 13:37