2017-03-26 1 views
0

私は、引数としてリストのサイズを受け取り、本質的にリストのサイズの階乗である数を持つ新しいリストを返す関数を書こうとしています。しかし、factorial()関数は "定義されていません"というエラーが発生するため使用できません。入力/出力のリストのサイズが与えられた場合、その階乗をリストとして返すにはどうすればよいですか?

例:

パズル= [1,2]、[2,2]、サイズ= 2 2(2)、すべての数値可能new_listによる= [1,2 ]

パズル= [1]、[2]、[3]、サイズ= 3×3(3)、全ての数値は可能new_list = [1,2,3]

私の現在コード(動作していません):

def get_valid_numbers(size): 
    num=size 
    valid_list=[] 
    return valid_list.append(num*factorial(num-1)) 

これは間違っていることはわかっていますが、どうやって解決するのかは分かりません。

+0

あなたの達成しようとしていることは本当にわかりません。階乗はn!ですので、例えば4!= 4 * 3 * 2 * 1 = 24です。しかし、私はあなたの質問にそのような何も表示されません。ところで、階乗は数学パッケージの関数なので、代わりにmath.factorialを使用する必要があります。 – DeathByDenim

+0

@DeathByDenim私は階乗が何をしているのか混乱していると思う。数学は決して私の強い訴訟ではなかった。私はすべての可能な数字を見つけることを試みている。例えば、3は(1,2,3)2は(1,2)5は(1,2,3,4,5)などを与える。 – kg123

+0

は5のために 'list(range(1,5 + 1))'のように? – DeathByDenim

答えて

0

これはあなたが探しているものですか?

def get_valid_num(size): 
    valid_list = list(range(1, size + 1)) 
    return valid_list 
print("All numbers possible: ", get_valid_num(5)) 

このコードは出力しない階乗けど(レンジ()関数の終了値が包括的ではないよう+​​ 1)のサイズ引数で囲まれた連続した整数のリストを行いますのでご注意ください。最後に

def factorial(size): 
    if size <= 2: 
     return size 
    else: 
     size = size * factorial(size - 1) 
    return size 

# This time you build a list of 120 elements (5! = 120) 
def get_valid_num(size): 
    valid_list = list(range(1, factorial(size) + 1)) 
    return valid_list 

print("All numbers possible: ", get_valid_num(5)) 

を次のように

場合は、しかし、あなたがリストを作成し、n型サイズの階乗でそれらを移入したいです、あなたが計算してリストを作成したい場合があり、これを実装する場合があります各要素の階乗

def factorial(size): 
    if size <= 2: 
     return size 
    else: 
     size = size * factorial(size - 1) 
    return size 

# Populate the list with the value of each factored element 
def get_valid_num(size): 
    valid_list = list(range(1, size + 1)) 
    factorials = [factorial(item) for item in valid_list] 
    return factorials 

print("All numbers possible: ", get_valid_num(5)) 
関連する問題