【发布时间】:2018-05-01 09:32:05
【问题描述】:
根据范围分配等级:
def getGrade(size):
grade =''
if size <= 32:
grade = 'p4'
elif size > 32 and size <=64:
grade = 'p6'
elif size > 64 and size <= 128:
grade = 'p10'
elif size > 128 and size <= 256:
grade = 'p15'
elif size > 256 and size <=512:
grade = 'p20'
elif size > 512 and size <= 1024:
grade = 'p30'
elif size > 1024 and size <= 2048:
grade = 'p40'
......
问题是需要再添加20个检查所以有没有比这种方法做得更好的方法。
【问题讨论】:
-
创建
dict的range对象(作为键)和等级字符串(作为值)? -
范围的上限和下限总是 2^n?
-
首先扔掉所有最小检查 - 如果会触发它们,则不需要它们
-
if size < 32: do somthing elif size < 64: do somethingetc. 如果它是 33,则第二个不需要检查>32 and <=64。如果小于 33,则第一个将触发。这大致将您的陈述减少了 50% - 但使用 max-value:label dict 会更好 -
@PatrickArtner 说了什么。所以你不需要所有那些双重测试。然而,当你确实需要这样的双重测试时,最好写
32 < size <= 64而不是size > 32 and size <=64。
标签: python python-3.x range