73

チュートリアルには、素数を見つけるための例があります。

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...

ダブル==は平等のテストであることは理解していますが、その部分はわかりませんif n % x。私が口頭で各部分を歩き、例に対してステートメントが何をするかを言うことができるように。しかし、パーセント記号がどのように分類されるのかわかりません。

if n % x実際に何を言いますか?

4

8 に答える 8

152

%は、引数に応じて2つのことを行います。この場合、モジュロ演算子として機能します。つまり、引数が数値の場合、最初の演算子を2番目の演算子で除算し、余りを返します。 34 % 10 == 434を10で割ると3になり、残りは4になります。

最初の引数が文字列の場合、2番目の引数を使用してフォーマットします。これは少し複雑なので、ドキュメントを参照しますが、例として:

>>> "foo %d bar" % 5
'foo 5 bar'

ただし、文字列のフォーマット動作は、文字列メカニズムを優先してPython3.1以降で補足されています。.format()

ここで説明するフォーマット操作は、多くの一般的なエラー(タプルと辞書を正しく表示できないなど)につながるさまざまな癖を示しています。新しいstr.format()インターフェイスを使用すると、これらのエラーを回避でき、テキストをフォーマットするための一般的により強力で柔軟かつ拡張可能なアプローチも提供されます。

そしてありがたいことに、ほとんどすべての新機能はpython2.6以降でも利用できます。

于 2009-06-07T06:58:52.793 に答える
75

モジュラス演算子; 左の値の余りを右の値で割った値になります。好き:

3 % 1ゼロに等しくなります(3は1で均等に除算されるため)

3 % 21に等しくなります(3を2で割ると余りが1になるため)。

于 2009-06-07T06:50:49.953 に答える
1

Python 2.6では、'%'演算子がモジュラスを実行しました。3.0.1で変更されたとは思いません

モジュロ演算子は、2つの数値の除算の余りを示します。

于 2009-06-07T06:49:41.610 に答える
1

除算のモジュロかどうかをチェックします。たとえば、2からnまでのすべての数値を反復処理し、nがその間の数値のいずれかで割り切れるかどうかを確認する場合です。簡単に言えば、与えられた数nが素数であるかどうかをチェックしています。(ヒント:n / 2までチェックできます)。

于 2009-06-07T06:50:55.540 に答える
1

モジュラス演算子。2 つの数を割ったときの余り。

例えば:

>>> 5 % 2 = 1 # remainder of 5 divided by 2 is 1
>>> 7 % 3 = 1 # remainer of 7 divided by 3 is 1
>>> 3 % 1 = 0 # because 1 divides evenly into 3
于 2011-11-06T13:03:08.980 に答える
0

x % n == 0
は、x/n とリマインダの値が結果として取得され、ゼロと比較されることを意味します....

例: 4/5==0

4/5 リマインダーは 4

4==0 (偽)

于 2018-07-06T17:42:48.030 に答える