Rol*_*Bly 7 python if-statement
什么是以下的Pythonic解决方案?
我正在读一个分辨率为.5的温度传感器.我需要写入它(它具有可编程恒温器输出),也具有.5分辨率.
所以我编写了这个函数(Python 2.7)来将一个浮点数作为输入舍入到最接近的.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)
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,分别输出6.0,6.5和7.0.这就是我想要的.
我对Python比较陌生.这条线
return roundnum + .5 if .25 <= decimals < .75 else roundnum
Run Code Online (Sandbox Code Playgroud)
让我对它的实施者表示钦佩.但它是Pythonic吗?
编辑:自发布以来,我学到了更多关于什么是'Pythonic'的内容.我的代码不是.Cmd的下面是.谢谢!
如果你保持表达式简单,它们被认为是pythonic,否则它变得难以阅读.
我会像这样四舍五入到最接近的0.5:
round(number*2) / 2.0
Run Code Online (Sandbox Code Playgroud)
或更一般地说:
def roundres(num, res):
return round(num / res) * res
Run Code Online (Sandbox Code Playgroud)