我目前正在学习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;而这似乎并不适合这项法案 - 尽管我完全有可能无法正确理解它们。
非常感谢任何帮助。
答案 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