私はプログラミング言語が初めてで、Pythonも初めてです。
それを説明する 3 つの短いチュートリアルを読んだにもかかわらず、% の重要性を理解するのにまだ苦労しています。
% がこのコードで正確に何をしているのか誰かが分析できますか?
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print n, "=", x, "*", n/x
私はプログラミング言語が初めてで、Pythonも初めてです。
それを説明する 3 つの短いチュートリアルを読んだにもかかわらず、% の重要性を理解するのにまだ苦労しています。
% がこのコードで正確に何をしているのか誰かが分析できますか?
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print n, "=", x, "*", n/x
数値の場合、除算の余りを返します(squiguyが指摘したように)。
10 / 3 は 3 で余りが 1 です。
だから10 % 3 == 1
。
最も一般的な用途は、割り切れるかどうかをチェックすることです。たとえば、そのループでは、n が x で割り切れるかどうかをチェックします。たとえば、n回ごとに何かを行うために使用できます。
for i in range(1, 10):
if i % 3 == 0:
print "I love cats and dogs"
else:
print "I love cats"
出力、
I love cats
I love cats
I love cats and dogs
I love cats
I love cats
I love cats and dogs
I love cats
I love cats
I love cats and dogs
この場合の % 演算子はModulo 演算子です
仕様で説明されているように:
% (剰余) 演算子は、最初の引数を 2 番目の引数で割った余りを返します。数値引数は最初に共通の型に変換されます。右ゼロの引数は、ZeroDivisionError 例外を発生させます。引数は浮動小数点数である場合があります。たとえば、3.14%0.7 は 0.34 です (3.14 は 4*0.7 + 0.34 に等しいため)。モジュロ演算子は常に、2 番目のオペランドと同じ符号 (またはゼロ) の結果を返します。結果の絶対値は、第 2 オペランドの絶対値より厳密に小さい
この場合、除算の余りを見つけています。n / x
コード サンプルは からn=2
まで繰り返しn=9
ます。各 についてn
、内側のループは のすべての約数がn
1 より大きいかどうかをチェックします。各約数について、 の因数分解を示す行を出力しn
ます。
% は剰余演算子です。基本的に整数除算演算の剰余を返します。5 % 2 = 1
、5 % 5 = 0
など。通常の整数演算では、すべての結果が切り捨てられるため、5 / 2 は 2 を返しますが、2 は 5 倍に収まります。もちろん、0 は特殊なケースであり、ほとんどの言語で未定義の動作をします。