2016-09-08 1 views
0

数字を2(2、6、10、14 ...)から始まる4つのグループに分類することが任されています。したがって、9の場合、カテゴリは6(6と10の間)になります。私は次の機能を開発しましたが、私はより効率的な手段と範囲に制限されていないことを推測しています。2から始まる番号の4のカテゴリーを見つけよう

>>> 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

ちょうど数式を使用しますか?

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

例:説明の仕方によって

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

:シフトバイ2なしで、あなただけのだけのことで見つけることができる4つの最も近い(下)複数、探しています整数除算を行い、次に4を掛けます(つまり、(n//4)*4)。 +2-2は、あなたのカテゴリーのシフトを説明します。

関連する問題