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
交换
a
和b
的值。解压
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/