2015-12-24 55 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" 
相關問題