我有这个代码,如果我输入数字3,它会输出0和1。
num = int(input("Enter number"))
for i in range(num):
for j in range(i):
print(j)
问题是我知道它会打印第一个0,因为范围(0)防止for j代码在for i的第一次迭代上执行。当i = 1时,它显然输出0,因为它是J的第一次迭代。但是当i = 2时,我知道j循环运行两次是因为range(2)但我很困惑为什么它输出0和1而不是1和2,因为它是J的当前迭代。谁能解释一下这个问题,教一点嵌套的for循环?
我试了代码,预期是0,1,2,但我得到了0 0 1。
2条答案
按热度按时间6jjcrrmo1#
因为
for j
循环的每次运行都要重新开始。您正在运行三个循环:一个是range(0)
,它什么也不做,一个是range(1)
,它产生0
,一个是range(2)
,它产生0 1
。它与以下相同:50pmv0ei2#
你得到0,0,1而不是0,1,2的原因是因为循环的设置方式。让我们仔细看看当i = 2时循环中发生了什么:
关于外循环的第一次迭代(i = 2),内部循环(对于range(i)中的j)运行两次,其中j取值0和1。当j = 0时,执行print语句,打印j的值,其为0。当j = 1时,再次执行print语句,打印j的值,所以当i = 2时,循环的输出是0,1。
在输出中看到两个0的原因是因为循环的设置方式。当i = 0和i = 1时,内部循环(对于range(i)中的j)根本不执行,因为range(i)返回一个空范围。这意味着外部循环的迭代中没有任何内容,因此当i = 2时,输出以0,0,1开始。
要得到预期的输出(0,1,2),可以将内部循环的范围从1而不是0开始。这将给予所需的输出。
试试这个代码:
在这个更新的代码中,当i = 2时,内部循环运行两次,j取值1和2。因此,当i = 2时,输出将是1,2。