Python基础:创建包含所有数字的范围

时间:2013-05-10 04:20:06

标签: python

我正在尝试创建一个函数,并继续收到相同的错误消息。这是我有一段时间遇到问题的事情。 (键)输入应该是一个整数。与(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'

1 个答案:

答案 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.