1

関数を作成しようとしていますが、同じエラー メッセージが表示され続けます。そして、これは私がしばらくの間問題を抱えていたことです。(キー)入力は整数であると想定されています。(x) と同じ整数。key/x の入力 200 と同様に、出力は '11001000' になります。私が取得し続けるエラーメッセージは次のとおりです。

「TypeError: 'int' オブジェクトは反復可能ではありません」

すべての数値が整数になるようにしようとしています。"{0:b}".format(200)配信するのと同じことを実行する関数を作成しようとしています。だから私が思いついたコードは次のとおりです。

def createBinKeyFromKey(key):
    for x in key:
              return "{o:b}".format(x)

また、while ループを使用して正しく実行し、エラー メッセージが表示されないようにしようとしましたが、これまでのところうまくいきませんでした。

整数を呼び出したいと思います。(キー) と書かれている場所のように、そこへの入力は整数になります。そして、整数のバイナリ文字列を返します。たとえば、Python シェルで createBinKeyFromKey(200) を入力すると、「11001000」が返されます。

4

1 に答える 1

3

range()またはを使用して数値の範囲を取得するために、整数を反復処理することはできませんxrange()range()最初にリスト全体を作成し、xrange()ここでイテレータ(メモリ効率の良い)を返します:

def createBinKeyFromKey(key):
    for x in range(key):
         yield "{0:b}".format(x) #use yield as return will end the loop after first iteration

を使用yieldすると、ジェネレータ関数になります。

デモ:

>>> list(createBinKeyFromKey(10))
['0', '1', '10', '11', '100', '101', '110', '111', '1000', '1001']
>>> for x in createBinKeyFromKey(5):
...     print x

0
1
10
11
100

ヘルプrange: _

>>> range?
range(stop) -> list of integers
range(start, stop[, step]) -> list of integers

Return a list containing an arithmetic progression of integers.
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns [0, 1, 2, 3].  The end point is omitted!
These are exactly the valid indices for a list of 4 elements.
于 2013-05-10T04:22:52.687 に答える