Python 3:无法理解第二次迭代

时间:2018-01-14 23:11:09

标签: python-3.x

使用下面提到的python代码,我正在读取用户输入的数字并打印该系列。

n=int(input("Enter a number: "))
for j in range(1,n+1):
    a=[]
    for i in range(1,j+1):
        print(i,sep=" ",end=" ")
        if(i<j):
            print("+",sep=" ",end=" ")
        a.append(i)
    print("=",sum(a))

当我运行此代码时,我看到了下面提到的输出。

RESTART: C:\SKANAKAV\at&t\Python\Aricent_Python\python_scripts\Read a Number 
n And Print the Series_contdddd\test_exercise.py 
Enter a number: 2
1 = 1
1 + 2 = 3

用户输入了数字2,即&#39; n&#39;。对于第一个&#39;为&#39;循环 - &gt; j是(1,3)其中j现在值为1。对于第二个&#39;为&#39;循环 - &gt;我是(1,2)。在下一行,它打印&#39; 1&#39;然后为&#39; if&#39;条件(i 1&lt; 1)是&#39; false&#39;并因此退出循环并将i(1)追加到&#39; a。现在最终输出打印为1 = 1.

我能够理解直到这意味着第一次迭代。现在这里是我无法理解程序流程的地方。它会回到第一个循环,其中&#39; j&#39;现在变成了2。 a又是一个空列表。 现在为第二个&#39;为&#39;循环 - &gt; (1,3) - &gt; &#39;我&#39;现在又是1。 现在我们打印1然后进入&#39;如果&#39;条件(i(1 <2),这是&#39; true&#39;因此进入循环并打印&#39; +&#39;。

现在再次&#39; a&#39;成为1&#39; i&#39;是1。 通过这个,它应该打印 - &gt; 1 + = 1。 但它打印1 + 2 = 3。 有人可以帮我理解这个程序流程吗?

1 个答案:

答案 0 :(得分:-1)

好的,让我们像第一个循环一样回顾第二个循环。我将列出变量值。

j = 2
a = []
i = 1
print i (1)
1 < 2 = true
print '+' (1 +)
a = [1]
print i (1 + 2)
2 < 2 = false
a = [1, 2]
print =, sum(a) (1 + 2 = 3)

你在第二个循环中的范围从1到j + 1(现在是3)