Python 范围(1,n+2)未在for循环中打印所需输出

Python 范围(1,n+2)未在for循环中打印所需输出,python,python-3.x,Python,Python 3.x,我在下面的代码中没有得到预期的输出。它应该打印到7,但它不打印 n=5 for i in range(1,n+2): for j in range(1,i): print(j, end='') print("\n") 对于范围为1的i,n+2 n+2是不正确的语法,因此创建一个名为x的新变量,并将其赋值为n+2,例如: x=n+2 要使数字达到7,x必须等于n+4,例如: n=5 x = n + 4 for i in range(1,x): for j

我在下面的代码中没有得到预期的输出。它应该打印到7,但它不打印

n=5
for i in range(1,n+2):
    for j in range(1,i):
        print(j, end='')
    print("\n")
对于范围为1的i,n+2 n+2是不正确的语法,因此创建一个名为x的新变量,并将其赋值为n+2,例如:

x=n+2

要使数字达到7,x必须等于n+4,例如:

n=5
x = n + 4
for i in range(1,x):
    for j in range(1,i):
        print(j, end='')
        print("\n")

缩进在python中也很重要。

范围函数中的第二个参数是停止值。它将不包括在循环中。因此,循环需要将1添加到两个范围的第二个参数:

n=5
for i in range(1,n+2 + 1):
    for j in range(1,i + 1):
        print(j, end='')
    print("\n")
但是,您应该习惯使用基于零的范围:

n=5
for i in range(n+2):
    for j in range(i+1):
        print(j+1, end='')
    print("\n")

所以,我不明白你为什么用n=5,当n=7做工作时,就像你想要的那样。我看到你已经用n=5得到了答案,所以我在这里放了一个n=7的解决方案,其中有一些打印,这将帮助你理解这两个嵌套循环中发生了什么

n=7 对于范围1中的i,n+2: 对于范围1中的j,i: printj:,j,end= 打印i:,i 印刷品*** 输出将是:

i: 1
***
j: 1 i: 2
***
j: 1 j: 2 i: 3
***
j: 1 j: 2 j: 3 i: 4
***
j: 1 j: 2 j: 3 j: 4 i: 5
***
j: 1 j: 2 j: 3 j: 4 j: 5 i: 6
***
j: 1 j: 2 j: 3 j: 4 j: 5 j: 6 i: 7
***
j: 1 j: 2 j: 3 j: 4 j: 5 j: 6 j: 7 i: 8
你注意到j在1,1范围内发生了什么吗?没有打印j,所以对于范围1,2中的j,打印j的1,i是2

这就是为什么n=5的代码不起作用的原因。当i为6时,j为5,对于范围1中的i,7只会一直到i=6

n = 5
for i in range(1, n+2):
    for j in range(1, i):
        print("j:", j, end =" ")
    print("i:", i)
    print("***")
输出:

i: 1
***
j: 1 i: 2
***
j: 1 j: 2 i: 3
***
j: 1 j: 2 j: 3 i: 4
***
j: 1 j: 2 j: 3 j: 4 i: 5
***
j: 1 j: 2 j: 3 j: 4 j: 5 i: 6
***

但是,我真的认为您应该习惯于使用基于0的范围。

它应该打印到7。。那么n=7?为什么使用n=5?范围的停止点是独占的-i最多为6,j最多为5。如果你想打印到7。。。n=7?我认为对于范围内的I,可能的重复将上升到x,但不包括它,因此x必须等于大于所需输出的2。