以下问题的 Pythonic 解决方案是什么?
我正在读取分辨率为 0.5 的温度传感器。我需要给它写信(它有一个可编程的恒温器输出),分辨率也是 0.5。
所以我编写了这个函数(Python 2.7)来将浮点数作为输入四舍五入到最接近的 0.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
让我对它的实施者钦佩流口水。但它是 Pythonic 的吗?
编辑:自从发布以来,我对什么是和不是 'Pythonic'有了更多的了解。我的代码不是。下面是 Cmd 的答案。谢谢!