python中一个棘手的for循环语句

时间:2017-07-18 15:42:19

标签: python for-loop

请帮助理解此代码:

a = b = 1
for i in range(1, 3):
 a, b = b, a + b

我无法理解两件事: 1.它是如何工作的?它是否为“a”和“b”分配了我? 2.为什么我们需要在开头将'a'和'b'分配给1?如果我们不这样做,这段代码会返回错误。为什么呢?

TIA

2 个答案:

答案 0 :(得分:2)

  1. 它是如何运作的?

    1. 此行将ab设置为1

      a = b = 1
      
    2. 此行迭代[1,3]范围内的整数(在本例中为1和2)。

      for i in range(1, 3):
      
    3. 此行针对i = 1i = 2运行,并将a设置为b的值,并将b设置为值{ {1}}。

      a + b

      注意,这可以改写为:

      a, b = b, a + b
      
  2. 为什么我们需要指定' 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.