def rect_extend(x):
  m, n = 1
  while 1 < x:
    m = m + 1
    n = n + 1
  return m, n


这个简单的函数返回:


  'int'对象不可迭代


iPython中的错误。我不知道为什么这样做,while功能不起作用-条件似乎是true

(虽然条件是有意简化的;原始代码没有它)

最佳答案

我想你要

m = 1
n = 1


要么

m = n = 1


而不是m, n = 1

这个(序列解压缩)[http://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences]:

x, y = z


所做的事情与您似乎认为的有所不同。

这实际上意味着:

x = z[0]    # The first item in z
y = z[1]    # The second element of z


例如,您可以这样做:

x, y, z = (1, 2, 4)


然后:

>>> x
1
>>> y
2
>>> z
4


在您的情况下,这不起作用,因为1是整数,没有元素,因此会出现错误。

与元组(和splat运算符-*)结合使用的序列拆包的有用功能:

这个:

a, b = b, a


交换ab的值。

解压range,对常量有用:

>>> RED, GREEN, BLUE = range(3)
>>> RED
0
>>> GREEN
1
>>> BLUE
2


splat运算符:

>>> first, *middle, last = 1, 2, 3, 4, 5, 6, 7, 8, 9
>>> first
1
>>> middle
[2, 3, 4, 5, 6, 7, 8]
>>> last
9

关于python - 在一段时间内“'int'对象不可迭代”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19752637/

10-10 10:47