检查值在Python中的三个范围之间

时间:2015-12-24 19:29:25

标签: 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中实现这一目标?

我已经看过&#34; Interval Comparisons&#34;而这似乎并不适合这项法案 - 尽管我完全有可能无法正确理解它们。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

没关系。这可能更具可读性,因为代码中的逻辑顺序与级别的升级相匹配:

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

答案 2 :(得分:0)

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

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