我正在尝试创建一个函数,并继续收到相同的错误消息。这是我有一段时间遇到问题的事情。 (键)输入应该是一个整数。与(x)相同的整数。类似于键/ 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'
答案 0 :(得分: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
使其成为generator function。
演示:
>>> 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.