在看慕课的课程,有段代码为:
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時,即為假,就不會進該循環。