0

可能重复:
python中switch语句的替换?

鉴于这种方法:

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

我想把它做成 switch-case 风格,但是 Python 不支持 switch-case 。

有什么替代品吗?

4

3 回答 3

3

怎么样6-len(str(index))

于 2013-01-01T20:54:35.340 回答
3

经典的pythonic方法是使用字典,其中键是您的测试,值是反映您打算做什么的可调用函数:

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()
于 2013-01-01T21:00:35.283 回答
2

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

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

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

于 2013-01-01T21:00:31.820 回答