1

我正在尝试创建一个函数,但我不断收到相同的错误消息。这是我有一段时间遇到的问题。(key) 输入应该是一个整数。与 (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 shell 中输入 createBinKeyFromKey(200),它会返回 '11001000'

4

1 回答 1

3

你不能迭代一个整数,来获得一个数字范围,使用range()or 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 回答