以下是关于以下问题的Pythonic解决方案?
我正在读取一个具有0.5分辨率的温度传感器。 我需要编写它(它具有可编程恒温器输出),同样也需要0.5的分辨率。
因此,我编写了这个函数(Python 2.7)来将输入的浮点数四舍五入到最近的0.5:
我正在读取一个具有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的答案如下,非常感谢!
return 0.25 <= decimals < 0.75 ? roundnum + 0.5 : roundnum;
- dwerner&&
相当于and
,!
相当于not
,||
相当于or
,?:
相当于if else
,就像ugly
相当于pretty
=P。我认为这个特定的顺序(例如1 ? 2 : 3
等同于2 if 1 else 3
)的部分原因是为了使用漂亮简短的英语单词来表示运算符。 - Claudiu