首页  >  问答  >  正文

python - while(i%3)该怎么理解?

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

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

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

ringa_leeringa_lee2740 天前2698

全部回复(10)我来回复

  • 天蓬老师

    天蓬老师2017-04-18 10:15:14

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

    回复
    0
  • PHPz

    PHPz2017-04-18 10:15:14

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

    回复
    0
  • 高洛峰

    高洛峰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循环,跳出。

    回复
    0
  • 阿神

    阿神2017-04-18 10:15:14

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:15:14

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

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 10:15:14

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

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 10:15:14

    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

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:15:14

    while(i%3) 

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

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:15:14

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

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:15:14

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

    回复
    0
  • 取消回复