2013-01-01 41 views
0

可能重複:
Replacements for switch statement in python?尋找一個很好的替代ELIF&如果像開關的情況下

鑑於這種方法:

def getIndex(index): 
    if((index) < 10): 
     return 5 
    elif(index < 100): 
     return 4 
    elif(index < 1000): 
     return 3 
    elif(index < 10000): 
     return 2 
    elif(index < 100000): 
     return 1 
    elif(index < 1000000): 
     return 0 

我想讓它但是,在開關盒風格中,Python不支持開關盒。

任何替代品?

+1

http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python - 檢查出來! :) –

+0

在這段代碼中,你可以使用'if'而不是'elif'。 –

+0

Python沒有'switch'的原因在於它的確在內部與您的'elif'語句系列完全相同。使用'elif'基本上是相同的,邏輯更明顯。它已經是Python的首選語法。沒有理由改變它。 – Keith

回答

3

6-len(str(index))

2

在這種特定情況下,我只想用數學:

def get_index(index): 
    return 6 - int(round(math.log(index, 10))) 

您必須使用內置的功能roundmath.log返回一個浮點數。

2

經典的Python的方式是使用一本字典,其中鍵是你的試驗和數值是反映你打算做什麼可調用的函數:

def do_a(): 
    print "did a" 

self do_b(): 
    print " did b" 

#... etc 

opts = {1:do_a, 2:do_b} 

if value in opts: 
    opts[value]() 
else: 
    do_some_default()