为什么在While循环中继续在Python中不起作用?

0md85ypi  于 2023-01-08  发布在  Python
关注(0)|答案(3)|浏览(129)

你好,当我在Python中练习while循环时,我的代码没有给出任何输出。我只是从书中学习Python,所以它听起来可能很基础:但是这段代码的问题在哪里呢?我试图打印小于100的整数,它们不能被5除尽。

x=0
while (x<101):
    if (x%5==0):
        continue
    
    print (x, end=" ")
    x=x+1

我试图打印小于100且不能被5整除的整数

r6hnlfcb

r6hnlfcb1#

continue返回到循环的开头,跳过了循环体的其余部分,这意味着它跳过了x = x + 1,所以你继续测试x的相同值。
使用for循环而不是while循环,这样增量就不会出现在跳过的主体中。

for x in range(100):
    if x % 5 == 0:
        continue

    print(x, end=" ")

如果您确实想使用whilecontinue,可以复制递增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才能得到增量之前的值。

x4shl7ld

x4shl7ld2#

在这里提问之前,你应该试着用调试器调试你的代码。如果你这样做了,你会马上发现问题。
代码陷入无限循环。请尝试以下操作:

x=0
while (x<101):
    if (x%5 != 0):
        print (x, end=" ")
    x=x+1
vfwfrxfs

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

这应该没问题!

相关问题