在看慕课的课程,有段代码为:
i = 1
while(i % 3):
print(i),
if (i >= 10):
break
i += 1
while后面的条件要为真,才能够执行代码块,但是i%3这个代表了什么条件呢?
天蓬老师2017-04-18 10:15:14
% 求余运算符,是看后者能否被前者整除, i%3 这个条件就是判断i能不能被3整除,所以结果只有两种 0 or 1 ! 比如 9%3 = 0 10%3 = 1,基础运算符,楼主可以多查一下资料,谢谢
高洛峰2017-04-18 10:15:14
首先,我们我们先看while语句的条件(i % 3),这个楼上解释了%是求余的意思,i%3的意思是求i除3的余数,因此while条件的意思就是i除3余数要大于0.
现在我们已知i的值为1,所以while条件成立,输出1,i++之后,i的值为2此时也满足while条件进入循环输出2,
接着i++,此时i的值为3不满足条件,不执行while循环,跳出。
阿神2017-04-18 10:15:14
正如题主问的,while后面的条件要为真,才能够执行代码块,i%3如果值为0,则为false,不执行后面的代码块,不为0的(1和2),则相当于true,执行后面的代码块,if语句也是相同的,条件语句如果为0,为false,不执行;非0,为true,执行。希望能帮到你!
PHP中文网2017-04-18 10:15:14
i%3
的结果难道不是获取余数么?比如i=3
结果是0
i=5
结果是2
而在做条件判断的时候会自动转成布尔类型,所以不能被3整除的才能进行运算,因此不管是1还是2都是可以进去,所以这题应该是求得找出10以内不能被3整除的数吧?
怪我咯2017-04-18 10:15:14
while (i % 3) { /* ... */ }
等价于
while (i % 3 != 0) { /* ... */ }
python 中的 i % 3
是模除(modulo)运算,对于整数操作数 a
,b
满足 a / b * b + a % b == a
当且仅当 a
整除 b
时,a % b == 0
。
所以循环终止的条件是 i
整除 3
巴扎黑2017-04-18 10:15:14
i%3 求模计算,有三种情况0 1 2 一个值判断真假遵循NaN undefined null 0 "" false 都为假,其余都为真,这时当求模为0时,即为假,就不会进该循环。