从2开始查找数字的类别4

时间:2016-09-08 16:39:26

标签: python-2.7

我的任务是将数字分为四个范围内的组,从2(2,6,10,14 ......)开始。因此对于数字9,类别将是6(6到10之间)。我已经开发了以下功能,但我猜测它是一种更有效的方法,而且范围不受限制。

>>> def FindCategory (num):
    categories = [2]
    lastVal = 2
    for i in range (100):
        lastVal = lastVal + 4
        categories += [lastVal]
    try:
        return [cat for cat in categories if cat < num and num < cat + 4] [0]
    except:
        return

>>> FindCategory (56)
54
>>> FindCategory (99999999999999999999999999)
>>>

1 个答案:

答案 0 :(得分:1)

只是使用数学?

def category(n):
    return (((n + 2) // 4) * 4) - 2

示例:

>>> category(2)
2
>>> category(56)
54
>>> category(99)
98
>>> category(99999999999999999999999999)
99999999999999999999999998

作为解释:没有shift-by-2,你只是寻找最接近的(较低的)4的倍数,只能通过整数除法找到然后乘以4(即{{1} }})。 (n//4)*4+2说明了您的类别转变。