问题

有没有人可以想到简化这个函数?我发现很多这个相当重复,但很难想到一种方法使其更加pythonic或更清洁.对python来说相对新,所以我很感激任何建议.

 def colorize(n):
    if n in range(0, 10):
        return selection[-1]
    elif n in range(10, 20):
        return selection[-2]
    elif n in range(20, 30):
        return selection[-3]
    elif n in range(30, 40):
        return selection[-4]
    elif n in range(40, 50):
        return selection[-5]
    elif n in range(50, 60):
        return selection[-6]
    elif n in range(60, 70):
        return selection[-7]
    elif n in range(70, 80):
        return selection[-8]
    elif n in range(80, 90):
        return selection[-9]
    elif n in range(90, 100):
        return selection[-10]
    else:
        return None
 

  最佳答案

要在 10 到 20 范围内获得 1 到 0 和 2 范围,您可以使用 Python 3 的 dustred 整数分部。

 x = n // 10 + 1
 

然后您可以否定这个并将其用于索引

 def colorize(n):
    if 0 <= n < 100:
        return selection[-(n // 10 + 1)]
 

如果您不从函数返回任何东西,它返回None,您不必显式返回它

  相同标签的其他问题

pythonfunctionif-statementrepeatcode-readability