0

各 2 進数は、タプルとして表す必要があります。関数が呼び出されると、結果は 2^N の 2 進数を含むタプルになります。

元。バイナリ(2)----> ((0,0), (0,1), (1,0), (1,1))

これを行うためにwhileループを使用しようとしています。

どこから始めればよいかについてのアドバイスは非常に役に立ちます。

4

4 に答える 4

1

おそらく 2 つのループが必要になるでしょう。外側のループは値をループ処理し、内側のループは各値の 2 進数を処理します。

値を整数としてループしてバイナリに変換するか、「現在の値」をループの周りにバイナリで持ち、コピーしてインクリメントすることができます。

于 2013-10-24T02:01:46.327 に答える
0

これを試して:

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 進数が必要だと思っていました。

于 2013-10-24T02:39:39.393 に答える
0
from numpy import binary_repr
[map(int, binary_repr(i, N)) for i in range(2**N)]
于 2013-10-24T04:07:42.083 に答える