68

標準+の 、-*および/演算子以外。しかし、これらはどういう意味ですか ( **, ^, %, //) ?

>>> 9+float(2) # addition
11.0
>>> 9-float(2) # subtraction
7.0
>>> 9*float(2) # multiplication
18.0
>>> 9/float(2) # division
4.5
>>>
>>> 9**float(2) # This looks like a square, (i.e. power 2) 
81.0
>>> 9**float(3) # So ** is equivalent to `math.pow(x,p)` ?
729.0

^オペレーターはどうですか?

>>> 9^int(2) # What is `^` in `x^u` , it only allows `int` for `u`
11
>>> 9^int(3)
10
>>> 9^int(4)
13
>>> 9^int(5)
12
>>> 9^int(6)
15
>>> 9^int(7)
14
>>> 9^int(8)
1
>>> 9^int(9)
0
>>> 9^int(10)
3
>>> 9^int(11)
2
>>> 9^int(12)
5

%inx%mは通常の剰余係数を返しますが、 の場合のみですm < x。なぜそうなるのでしょうか? 何をし%ますか?

>>> 9%float(2)
1.0
>>> 9%float(3)
0.0
>>> 9%float(4)
1.0
>>> 9%float(5)
4.0
>>> 9%float(6)
3.0
>>> 9%float(7)
2.0
>>> 9%float(8)
1.0
>>> 9%float(9)
0.0
>>> 9%float(10)
9.0
>>> 9%float(11)
9.0
>>> 9%float(12)
9.0

//オペレーターはどうですか?それは何をするためのものか?

>>> 9//float(2)
4.0
>>> 9//float(3)
3.0
>>> 9//float(4)
2.0
>>> 9//float(5)
1.0
>>> 9//float(6)
1.0
>>> 9//float(7)
1.0
>>> 9//float(8)
1.0
>>> 9//float(9)
1.0
>>> 9//float(1)
9.0
>>> 9//float(0.5)
18.0
4

3 に答える 3

127
  • **: べき乗
  • ^: 排他的論理和 (ビット単位)
  • %: 係数
  • //: 積分結果で割る (余りを捨てる)
于 2013-03-04T03:07:35.320 に答える
36

これらの演算子はすべてPython 言語リファレンスで見つけることができますが、すべてを見つけるには少しスクロールする必要があります。他の答えが言ったように:

  • **演算子はべき乗を行います。パワーアップされa ** bます。関数の引数と呼び出し表記でも同じ記号が使用されますが、意味は異なります (任意のキーワード引数の受け渡し)。ab**
  • 演算子は^バイナリ xor を実行します。は、両方ではなく、またはどちらかにa ^ b設定されたビットのみを含む値を返します。これは簡単です!ab
  • 演算子は、%主に 2 つの整数のモジュラスを見つけることです。a % bで割った余りを返しaますb。他のプログラミング言語 (C など) のモジュラス演算子とは異なり、Python では、モジュラスは と同じ符号bではなく、 と同じ符号を持ちaます。同じ演算子が「古い」スタイルの文字列書式設定にも使用されるため、 が書式文字列であり、 に挿入できる値 (または値のタプル) であるa % b場合、文字列を返すことができます。aba
  • //演算子は、整数除算の Python バージョンを実行します。Python の整数除算は、他の言語 (C など) で提供される整数除算とまったく同じではありません。これは、ゼロではなく負の無限大に向かって丸められるためです。モジュラス演算子と合わせて、 と言えますa == (a // b)*b + (a % b)。Python 2 では、(通常の除算演算子を使用して) 2 つの整数を除算するときの既定の動作は床除算です/。これは予期せぬことである可能性があるため (特に、関数の引数として取得する数値の型にこだわりがない場合)、Python 3 は「真の」(浮動小数点) 除算を四捨五入される除算の標準にするように変更されました。それ以外の場合は、明示的に要求された場合にのみ「フロア」分割を行います。from __future__ import divisionファイルの上部にあります。強くお勧めします!)
于 2013-03-04T03:33:02.153 に答える
10

**あなたはそれがべき乗関数であることは正しいです。

^はビット単位の XOR です。

%は確かにモジュラス演算ですが、正の数の場合はx % m = x常にm > x. これはモジュラスの定義から導かれます。(さらに、Pythonx % mは の符号を持つように指定しますm。)

//余りを捨てて整数を返す除算演算です。/これは、ほとんどのプログラミング言語でを使用する除算の標準形式です。ただし、Python 3では、引数が整数であっても/浮動小数点除算を実行するように の動作が変更されました。演算子は、Python 2.6 と Python 3 で導入され、Python 2 と Python 3 の間で一貫して動作する整数除算演算子を提供します。これは、次のことを意味します。//

| context                                | `/` behavior   | `//` behavior |
---------------------------------------------------------------------------
| floating-point arguments, Python 2 & 3 | float division | int divison   |
---------------------------------------------------------------------------
| integer arguments, python 2            | int division   | int division  |
---------------------------------------------------------------------------
| integer arguments, python 3            | float division | int division  |

詳細については、次の質問を参照してください: Python 2.7 の除算。と 3.3

于 2013-03-04T03:08:56.117 に答える