Python 寻找elif&;如果,像开关箱

Python 寻找elif&;如果,像开关箱,python,if-statement,switch-statement,Python,If Statement,Switch Statement,可能重复: 鉴于此方法: 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): retu

可能重复:

鉴于此方法:

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
def getIndex(索引):
如果((指数)<10):
返回5
elif(指数<100):
返回4
elif(指数<1000):
返回3
elif(指数<10000):
返回2
elif(指数<100000):
返回1
elif(指数<1000000):
返回0
我想让它成为一个开关大小写样式,但是Python不支持开关大小写


有替代品吗

关于
6-len(str(index))
呢?

在这个特殊的例子中,我只会使用数学:

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

您必须使用内置函数作为
math.log
返回浮点。

经典的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()

-看看这个!:)您可以在这段代码中的任何地方使用
if
而不是
elif
。Python没有
switch
的原因是它在内部与您的
elif
语句系列完全相同。使用
elif
基本上与逻辑相同且更明显。它已经是Python的首选语法。没有理由更改它。请参阅问题的答案。