各 2 進数は、タプルとして表す必要があります。関数が呼び出されると、結果は 2^N の 2 進数を含むタプルになります。
元。バイナリ(2)----> ((0,0), (0,1), (1,0), (1,1))
これを行うためにwhileループを使用しようとしています。
どこから始めればよいかについてのアドバイスは非常に役に立ちます。
各 2 進数は、タプルとして表す必要があります。関数が呼び出されると、結果は 2^N の 2 進数を含むタプルになります。
元。バイナリ(2)----> ((0,0), (0,1), (1,0), (1,1))
これを行うためにwhileループを使用しようとしています。
どこから始めればよいかについてのアドバイスは非常に役に立ちます。
おそらく 2 つのループが必要になるでしょう。外側のループは値をループ処理し、内側のループは各値の 2 進数を処理します。
値を整数としてループしてバイナリに変換するか、「現在の値」をループの周りにバイナリで持ち、コピーしてインクリメントすることができます。
これを試して:
def binary(n):
num_digits = len(bin(n).replace('0b',''))
all_bin_numbers=()
for i in range(n):
bin_num=()
for digit in str(bin(i)).replace('0b','').rjust(num_digits, '0'):
bin_num += (int(digit),)
all_bin_numbers += (bin_num,)
return all_bin_numbers
print binary(2)
e: itertools が答える聖なる牛。
e2: 質問を完全に読んでいないようです。指定した n までのすべての 2 進数が必要だと思っていました。
from numpy import binary_repr
[map(int, binary_repr(i, N)) for i in range(2**N)]