在看慕课的课程,有段代码为:
i = 1 while(i % 3): print(i), if (i >= 10): break i += 1
while后面的条件要为真,才能够执行代码块,但是i%3这个代表了什么条件呢?
ringa_lee
% 剰余演算子は、後者が前者で割り切れるかどうかを確認するもので、条件 i%3 は i が 3 で割り切れるかどうかを判断するため、結果は 0 または 1 の 2 つだけになります。たとえば、9%3 = 0 10%3 = 1. 基本的な演算子、作者は詳細を確認できます、ありがとう
歴史に残された問題、0は偽、0以外は真なのでwhile(i%3)等价于while(i%3 != 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 を出力します。then i++ このとき、i の値は 3 であり、条件を満たしていません。while ループは実行されずに飛び出します。
質問者が質問したように、コードブロックを実行するには、while の後の条件が true でなければなりません。i%3 の値が 0 の場合、それは false となり、0 でない場合は次のコードブロックは実行されません。 2)、これは true と同等であり、その後のコード ブロックも同様です。条件文が 0 の場合は false、0 以外の場合は実行されません。 true である場合、実行されます。これがお役に立てば幸いです!
i%3的结果难道不是获取余数么?比如i=3结果是0 i=5结果是2 而在做条件判断的时候会自动转成布尔类型,所以不能被3整除的才能进行运算,因此不管是1还是2都是可以进去,所以这题应该是求得找出10以内不能被3整除的数吧?
i%3
i=3
0
i=5
2
找出10以内不能被3整除的数吧?
単純な while(i%3) は、i が 3 で割り切れる場合、ループをスキップすることを意味します。
リーリー
は
i % 3
a
b
a / b * を満たします。 b + a % b == a
i % 3 是模除(modulo)运算,对于整数操作数 a,b 满足 a / b * b + a % b == a
a / b * b + a % b == a
当且仅当 a 整除 b 时,a % b == 0。
a % b == 0
所以循环终止的条件是 i 整除 3a % b == 0 は、a が b を除算する場合に限ります。
i
3
は、i を 3 で割ることができるときにループが停止することを意味します。 0 は false、0 以外は true という意味です。 i%3==0 の場合、ループはありません。
i%3 モジュロ計算には、次の 3 つの状況があります。 0 1 2 値の真偽の判定は、NaN unknown null 0 "" false に従い、すべてが false、残りが true のとき、モジュラスは次のとおりです。 0、それは false なので、このサイクルには入りません。
3で割り切れるまでループしたらループから抜け出す
% 剰余演算子は、後者が前者で割り切れるかどうかを確認するもので、条件 i%3 は i が 3 で割り切れるかどうかを判断するため、結果は 0 または 1 の 2 つだけになります。たとえば、9%3 = 0 10%3 = 1. 基本的な演算子、作者は詳細を確認できます、ありがとう
歴史に残された問題、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 を出力します。
then i++ このとき、i の値は 3 であり、条件を満たしていません。while ループは実行されずに飛び出します。
質問者が質問したように、コードブロックを実行するには、while の後の条件が true でなければなりません。i%3 の値が 0 の場合、それは false となり、0 でない場合は次のコードブロックは実行されません。 2)、これは true と同等であり、その後のコード ブロックも同様です。条件文が 0 の場合は false、0 以外の場合は実行されません。 true である場合、実行されます。これがお役に立てば幸いです!
i%3
的结果难道不是获取余数么?比如i=3
结果是0
i=5
结果是2
而在做条件判断的时候会自动转成布尔类型,所以不能被3整除的才能进行运算,因此不管是1还是2都是可以进去,所以这题应该是求得找出10以内不能被3整除的数吧?
単純な
while(i%3)
は、i が 3 で割り切れる場合、ループをスキップすることを意味します。リーリー
は
と同等です リーリー Python のi % 3
は、整数オペランドa
の場合、b
はa / b * を満たします。 b + a % b == a
i % 3
是模除(modulo)运算,对于整数操作数a
,b
满足a / b * b + a % b == a
当且仅当
a
整除b
时,a % b == 0
。所以循环终止的条件是
🎜つまり、ループ終了の条件はi
整除3
a % b == 0
は、a
がb
を除算する場合に限ります。i
が3
を割るということになります🎜リーリー
は、i を 3 で割ることができるときにループが停止することを意味します。 0 は false、0 以外は true という意味です。 i%3==0 の場合、ループはありません。
i%3 モジュロ計算には、次の 3 つの状況があります。 0 1 2 値の真偽の判定は、NaN unknown null 0 "" false に従い、すべてが false、残りが true のとき、モジュラスは次のとおりです。 0、それは false なので、このサイクルには入りません。
3で割り切れるまでループしたらループから抜け出す