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

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

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

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

ringa_lee
ringa_lee

ringa_lee

全部回覆(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整除就跳出循環

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板