python - while(i%3)该怎么理解?
ringa_lee
ringa_lee 2017-04-18 10:13:14
0
10
2731

在看慕课的课程,有段代码为:

i = 1
while(i % 3): 
    print(i),
    if (i >= 10):
        break
    i += 1

while后面的条件要为真,才能够执行代码块,但是i%3这个代表了什么条件呢?

ringa_lee
ringa_lee

ringa_lee

Antworte allen(10)
Peter_Zhu

% 求余运算符,是看后者能否被前者整除, i%3 这个条件就是判断i能不能被3整除,所以结果只有两种 0 or 1 ! 比如 9%3 = 0 10%3 = 1,基础运算符,楼主可以多查一下资料,谢谢

PHPzhong

历史遗留问题,0为假,非0为真,所以while(i%3)等价于while(i%3 != 0).

小葫芦

首先,我们我们先看while语句的条件(i % 3),这个楼上解释了%是求余的意思,i%3的意思是求i除3的余数,因此while条件的意思就是i除3余数要大于0.
现在我们已知i的值为1,所以while条件成立,输出1,i++之后,i的值为2此时也满足while条件进入循环输出2,
接着i++,此时i的值为3不满足条件,不执行while循环,跳出。

阿神

正如题主问的,while后面的条件要为真,才能够执行代码块,i%3如果值为0,则为false,不执行后面的代码块,不为0的(1和2),则相当于true,执行后面的代码块,if语句也是相同的,条件语句如果为0,为false,不执行;非0,为true,执行。希望能帮到你!

Ty80

i%3的结果难道不是获取余数么?比如i=3结果是0 i=5结果是2 而在做条件判断的时候会自动转成布尔类型,所以不能被3整除的才能进行运算,因此不管是1还是2都是可以进去,所以这题应该是求得找出10以内不能被3整除的数吧?

刘奇

单纯的while(i%3)是指当i能被3整除时,跳过该循环。

刘奇
while (i % 3) { /* ... */ }

等价于

while (i % 3 != 0) { /* ... */ }

python 中的 i % 3 是模除(modulo)运算,对于整数操作数 ab 满足 a / b * b + a % b == a

当且仅当 a 整除 b 时,a % b == 0

所以循环终止的条件是 i 整除 3

大家讲道理
while(i%3) 

的意思就是i可以被3除尽的时候循环停止。0为假,非0为真就是这个意思。当i%3==0的时候,就不循环了。

巴扎黑

i%3 求模计算,有三种情况0 1 2 一个值判断真假遵循NaN undefined null 0 "" false 都为假,其余都为真,这时当求模为0时,即为假,就不会进该循环。

大家讲道理

当i循环到能被3整除就跳出循环

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage