你好,当我在Python中练习while循环时,我的代码没有给出任何输出。我只是从书中学习Python,所以它听起来可能很基础:但是这段代码的问题在哪里呢?我试图打印小于100的整数,它们不能被5除尽。
x=0 while (x<101): if (x%5==0): continue print (x, end=" ") x=x+1
我试图打印小于100且不能被5整除的整数
r6hnlfcb1#
continue返回到循环的开头,跳过了循环体的其余部分,这意味着它跳过了x = x + 1,所以你继续测试x的相同值。使用for循环而不是while循环,这样增量就不会出现在跳过的主体中。
continue
x = x + 1
x
for
while
for x in range(100): if x % 5 == 0: continue print(x, end=" ")
如果您确实想使用while和continue,可以复制递增x的代码。
while x < 101: if x % 5 == 0: x += 1 continue print(x, end=" ") x += 1
也可以在测试之前移动增量
while x < 101: x += 1 if x % 5 == 1: continue print(x-1, end=" ")
但请注意,这会使它变得更加复杂,因为在打印时必须减去1才能得到增量之前的值。
x4shl7ld2#
在这里提问之前,你应该试着用调试器调试你的代码。如果你这样做了,你会马上发现问题。代码陷入无限循环。请尝试以下操作:
x=0 while (x<101): if (x%5 != 0): print (x, end=" ") x=x+1
vfwfrxfs3#
你得到了一个执行的无限循环...当x为0时为真,循环在下一次执行时继续,但x不递增,所以在下一次循环执行时,结果相同:0% 5 == 0返回真解决方法:在继续前增加x;因此您将获得:
x=0 while (x<101): if (x%5==0): x=x+1 continue print (x, end=" ") x=x+1
这应该没问题!
3条答案
按热度按时间r6hnlfcb1#
continue
返回到循环的开头,跳过了循环体的其余部分,这意味着它跳过了x = x + 1
,所以你继续测试x
的相同值。使用
for
循环而不是while
循环,这样增量就不会出现在跳过的主体中。如果您确实想使用
while
和continue
,可以复制递增x
的代码。也可以在测试之前移动增量
但请注意,这会使它变得更加复杂,因为在打印时必须减去1才能得到增量之前的值。
x4shl7ld2#
在这里提问之前,你应该试着用调试器调试你的代码。如果你这样做了,你会马上发现问题。
代码陷入无限循环。请尝试以下操作:
vfwfrxfs3#
你得到了一个执行的无限循环...
当x为0时为真,循环在下一次执行时继续,但x不递增,所以在下一次循环执行时,结果相同:0% 5 == 0返回真
解决方法:在继续前增加x;
因此您将获得:
这应该没问题!