2015-12-24 39 views
3

我目前正在学习Python,并且希望确保我使用了良好的python实践,并且需要一些帮助来找到检查值是否落在不同范围之间的最佳方法。在Python中检查一个值在三个范围内

基本上我试图找出CPU利用率是否介于0-33(绿色),34-66(琥珀色)或67-100(红色)之间。这是我现在的代码;

green = 33 
amber = 66 
red = 100 # Probably not needed, but there for completeness 

if cpu <= green: 
    print "green" 
elif cpu > amber: 
    print "red" 
else: 
    print "amber" 

有没有更好的方法在Python中实现这一点?

我看过“区间比较”,似乎不太符合法案 - 尽管我完全有可能没有正确理解它们。

任何帮助,非常感谢。

+0

@PadraicCunningham为什么? – wim

+0

@wim,看错了,排序很混乱 –

回答

0

这是一个简单的一段代码,并且足够可读。但是如果你有更多的时间间隔,你需要一个循环。这里是一个例子:

for level_max, level in [(33, 'green'), (66, 'amber'), (100, 'red')]: 
    if cpu <= level_max: 
     print level 
     break 
+0

这似乎是一种更优雅的做事方式,非常感谢您的帮助 - 非常感谢。 – troozers

2

在你的情况下,它几乎没有任何简单的,但一般来说,你可以用bisect模块进行比较。

limits = [33, 66, 100] 
names = ['green', 'amber', 'red'] 
interval = bisect.bisect_left(limits, cpu) 
print names[interval] 
+0

你说得对,更新了。 –

+0

你不觉得使用二进制搜索3值有点矫枉过正吗? – wim

2

这很好。这可能是更可读的,因为逻辑的代码中的顺序是匹配水平的升级:

if cpu <= green: 
    print "green" 
elif cpu <= amber: 
    print "amber" 
else: 
    print "red" 
相关问题