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

古典的な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 に答える
3

どう6-len(str(index))ですか?

于 2013-01-01T20:54:35.340 に答える
2

この特定の例では、私は数学を使用します:

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

roundfloatをmath.log返すように組み込み関数を使用する必要があります。

于 2013-01-01T21:00:31.820 に答える