搜尋

首頁  >  問答  >  主體

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

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

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

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

ringa_leeringa_lee2802 天前2737

全部回覆(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
  • 取消回覆