鉴于此方法:
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。
是否有任何替代品?
答案 0 :(得分:3)
6-len(str(index))
怎么办?
答案 1 :(得分: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()
答案 2 :(得分:2)
在这个特定的例子中,我只会使用数学:
def get_index(index):
return 6 - int(round(math.log(index, 10)))
您必须使用内置函数round
,因为math.log
会返回一个浮点数。