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

Python 3.x 打印从1到100的数字并跳过可被3或5整除的数字。返回两个值的缩进错误,python-3.x,if-statement,while-loop,indentation,Python 3.x,If Statement,While Loop,Indentation,我想打印从1到100的数字,并跳过可被3或5整除的数字。我犯了一个缩进错误,得到了两个值。逻辑是什么 代码如下: i=1 虽然我@Thymen在评论中已经很好地解释了它,但基本上如果不是(i%3==0或i%5==0):意味着如果数字可以被3或5整除,那么if块中的代码当然不会被执行。这意味着只要i=3,就会跳过if块,while循环将继续,而不会增加i,这将导致无限循环 作为旁注,我会用一个continue语句来写这篇文章,这样就可以清楚地知道你在做什么: i = 0 while i <

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

代码如下:

i=1

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

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

i = 0
while i < 100:
    i += 1
    if not i % 3 or not i % 5:
        continue
    print(i, end="   ")
i=0
当我<100时:
i+=1
如果不是i%3或不是i%5:
持续
打印(i,end=“”)

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

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

i = 0
while i < 100:
    i += 1
    if not i % 3 or not i % 5:
        continue
    print(i, end="   ")
i=0
当我<100时:
i+=1
如果不是i%3或不是i%5:
持续
打印(i,end=“”)

不是(i%3==0或i%5==0)
是获取2个值的原因。由于从值1开始,值
1%3==0
将计算为
False
,类似于
1%5==0
,因为两者都不等于1。然后前面的
not
将使语句
为True
,从而进入循环。这将增加
i=i+1
(同样
i+=1
也会起作用)。然后我们得到同样有效的
2
,但是对于
3
语句是
False
,因为
3%3==0
True
使整个语句
为False
)。从那时起,
i=i+1
不再执行,
i
总是
3
不是(i%3==0或i%5==0)
是获得2个值的原因。由于从值1开始,值
1%3==0
将计算为
False
,类似于
1%5==0
,因为两者都不等于1。然后前面的
not
将使语句
为True
,从而进入循环。这将增加
i=i+1
(同样
i+=1
也会起作用)。然后我们得到同样有效的
2
,但是对于
3
语句是
False
,因为
3%3==0
True
使整个语句
为False
)。从那时起,
i=i+1
将不再执行,
i
始终是
3
。为什么您没有将i%3或i%5==0,但代码仍然可以在没有它的情况下运行。这怎么可能呢?If语句返回条件True或False,zero result返回False。尝试x=not 1,然后打印x。是的,正如@Susan所说,如果
i%3
的值为0,那么在条件语句中,它将返回
False
为什么您没有将i%3或i%5==0,但代码仍然可以在没有该值的情况下工作。这怎么可能呢?If语句返回条件True或False,zero result返回False。尝试x=not 1,然后打印x。如@Susan所说,是的,如果
i%3
的值为0,则在条件语句中它将返回
False