打印从 1 到 100 的数字并跳过可被 3 或 5 整除的数字。缩进错误返回两个值

Printing the numbers from 1 to 100 and skipping the numbers divisible by 3 or 5. An indentation mistake returning two values

我想打印从 1 到 100 的数字并跳过可被 3 或 5 整除的数字。我犯了一个缩进错误,我得到了两个值。这是什么逻辑?

代码如下:

i = 1
while i<=100:
    if not(i%3==0 or i%5==0):
        print(i,end="   ")
        i=i+1  ***indentation mistake***

@Thymen 已经在评论中解释得很好,但基本上 if not (i%3==0 or i%5==0): 意味着如果数字可以被 3 或 5 整除,那么 if 块中的代码当然会不被执行。这意味着一旦 i=3if 块将被跳过并且 while 循环将继续,而不会增加 i,这将导致无限循环。

作为旁注,我会用 continue 语句来写这篇文章,这样你就可以清楚地知道你在做什么:

i = 0
while i < 100:
    i += 1
    if not i % 3 or not i % 5:
        continue
    print(i, end="   ")