请帮助理解此代码:
a = b = 1
for i in range(1, 3):
a, b = b, a + b
我无法理解两件事: 1.它是如何工作的?它是否为“a”和“b”分配了我? 2.为什么我们需要在开头将'a'和'b'分配给1?如果我们不这样做,这段代码会返回错误。为什么呢?
TIA
答案 0 :(得分:2)
它是如何运作的?
此行将a
和b
设置为1
a = b = 1
此行迭代[1,3]范围内的整数(在本例中为1和2)。
for i in range(1, 3):
此行针对i = 1
和i = 2
运行,并将a
设置为b
的值,并将b
设置为值{ {1}}。
a + b
注意,这可以改写为:
a, b = b, a + b
为什么我们需要指定' a'和' b'一开始是1?
因为如果我们不这样做,那么tmp = b
b = a + tmp
a = tmp
和a
将是未定义的,Python将不知道如何评估b
。
答案 1 :(得分:2)
你可以想到' for i in range(1,3)
'作为一个计数器,只需在for循环中运行代码一定次数(3)。这是因为我从未在for循环中的表达式中使用过。
我们必须在开头指定a和b的值,否则我们将无法在下面的计算中使用任何数字。让我们一步一步看看我们是否能够理解发生了什么:
首先,我们知道a和b都等于1.
<强> I = 1:强>
a = b所以a = 1
b = a + b所以b = 2
<强> I = 2:强>
a = b所以a = 2
b = a + b 这使用了之前的值,所以b = 3
现在我将大于范围,因此for循环将停止。
执行后,a = 2,b = 3.