2014-02-27 68 views
0

我有以下功能,PyCharm在關於「簡化鏈式比較」的elif聲明中提醒我。代碼工作,我得到我想要的對象,只是想知道這個警告,以及如何讓它變得更好?什麼是PyCharm「簡化鏈式比較」

 def preferred_contacts(self): 
     x = random.randint(0, 100) 
     email = u'E' 
     text = u'M' 
     phone = u'P' 
     letter = u'L' 
     none = u'N' 

     if x < 25: 
      return email 
     elif x >= 26 and x <= 50: 
      return text 
     elif x >= 51 and x <= 75: 
      return phone 
     elif x >= 76 and x <= 100: 
      return letter 
     else: 
      return none 
+4

你當然可以刪除所有的'X> ='比較,因爲憑藉着深遠的'elif'它已經被證明不符合條件的前面還有 – mhlester

+1

,你會很高興地得知: 'elif 76 <= x <= 100:'你會期望它做什麼。 – Josay

+2

真的你不需要'和'ops; 'elif 26 <= x <= 50'等等...... – Drewness

回答

1

@mhlester應該獲得榮譽,並指出,你可以從條件,因爲你正在使用elif>=條款,因爲他們已經是隱含的。然而,如果你想通過將數據放入一個元組中然後索引它,你還可以更多地壓縮事物。

return ('E', 'M', 'P', 'L', 'N')[x/25] # This assumes x has an upper bound of 124 or less. 

當然,在這個特殊的情況下,你可以讓你的生活變得更簡單。

return random.choice(('E', 'M', 'P', 'L', 'N')) 
+0

謝謝你。我真的不知道我可以做一個隨機選擇 – DarthOpto

+0

Docs是你的朋友。 ;)http://docs.python.org/2/library/random.html#random.choice –

+1

由於字符串是可迭代的,所以你甚至可以做'random.choice('EMPLN')'。 –