SIGMA-SE Tech Blog

SIGMA-SE Tech Blog

Python - 算術演算子まとめ : +, -, *, /, //, **

目的

この記事では、算術演算子について基本的な使い方を記載する。

算術演算子の種類

算術演算子は、一般的な四則演算とプログラム特有の表現である単項プラス演算単項マイナス演算を合わせた演算子を指す。

  • 算術演算子一覧
    演算子 使用例 説明
    + +a 正の整数:実質 a と同義。(暗黙的変換で用いる)
    - -a 符号反転:a の符号を反転する。
    + a + b 加算:a に b を足す。
    - a - b 減算:a から b を引く。
    * a * b 乗算:a に b を掛ける。
    / a / b 除算:a を b で割る。
    // a // b 整数除算:a を b で割った結果から小数以下を切り捨てる。
    % a % b 剰余:a を b で割った余り。
    ** a ** b べき乗:a の b 乗。

以降、簡単な実装サンプルを対話モード(インタプリタ)で解説する。

※ 演算結果の 最大値最小値 についてはPCのスペックに依存する。詳しくは下記を参考。

単項プラス・マイナス演算子(+/-)

  • 単項プラス演算子(+)
    単項プラス演算子は、少し特殊で対象値に付加しても符号(もちろん値)の変化はない。

    $ python
        >>>
        >>> # 5 に単項プラス演算子を付加して出力
        >>> int_a = 5
        >>> print(+int_a)
        5
        >>>
    

    上記の通り、int型に単項プラス演算子を付加しても結果は同じだが、boolean型からint型の暗黙的な変換を利用してコーディングするケースがある。

    $ python
        >>>
        >>> # boolean を定義し、単項プラス演算子でintに変換
        >>> bool_a = False
        >>> print(bool_a)
        False
        >>> print(+bool_a)
        0
        >>> bool_b = True
        >>> print(bool_b)
        True
        >>> print(+bool_b)
        1
        >>>
    
  • 単項マイナス演算子(-)
    単項マイナス演算子は、対象値の符号を反転する。
    -1 を掛けた結果が欲しいような場合に使用する。

    $ python
        >>>
        >>> # int型の 5 に単項マイナス演算子を付加して出力
        >>> int_a = 5
        >>> print(-int_a)
        -5
        >>>
        >>> # 単項マイナス演算子を 2 回付加して出力
        >>> print(-(-int_a))
        5
        >>>
        >>> # complex型の 1 - 2j に単項マイナス演算子を付加して出力
        >>> complex_a = - (1 - 2j)
        >>> print(complex_a)
        (-1+2j)
        >>>
    

加算(+)・減算(-)

  • 加算(+)
    ※ 四則演算の加算と同じ結果。

    $ python
        >>>
        >>> # int型の 1 に 2 を加算
        >>> int_a = 1 + 2
        >>> print(int_a)
        3
        >>>
        >>> # float型の 1.5 に 2.5 を加算
        >>> float_a = 1.5 + 2.5
        >>> print(float_a)
        4.0
        >>>
        >>> # complex型の 5+5j に 5+5j を加算
        >>> complex_a = 5 + 5j + 5 + 5j
        >>> print(complex_a)
        (10+10j)
        >>>
    
  • 減算(-)
    ※ 四則演算の減算と同じ結果。

    $ python
        >>>
        >>> # int型の 3 から 2 を減算
        >>> int_a = 3 - 2
        >>> print(int_a)
        1
        >>>
        >>> # float型の 1.5 から 2.5 を減算
        >>> float_a = 1.5 - 2.5
        >>> print(float_a)
        -1.0
        >>>
        >>> # complex型の 5 + 5j から 7 + 3j を減算
        >>> complex_a = 5 + 5j - (7 + 3j)
        >>> print(complex_a)
        (-2+2j)
        >>>
    

乗算(*)・除算(/・//)・剰余(%)

  • 乗算(*)
    ※ 四則演算の乗算と同じ結果。

    $ python
        >>>
        >>> # int型の 2に 2 を乗算
        >>> int_a = 2 * 2
        >>> print(int_a)
        4
        >>> # float型の -2.0に 2.5 を乗算
        >>> float_a = -2.0 * 2.5
        >>> print(float_a)
        -5.0
        >>> # complex型の 2 + 2j に -2.0 を乗算
        >>> complex_a = -2.0 * (2 + 2j)
        >>> print(complex_a)
        (-4-4j)
        >>>
    
  • 除算(/)
    ※ 四則演算の除算と同じ結果。

    $ python
        >>>
        >>> # int型の 6 を 2 で除算
        >>> int_a = 6 / 2
        >>> print(int_a)
        3.0
        >>> # float型の -6.5 を 0.5 で除算
        >>> float_a = -6.5 / 0.5
        >>> print(float_a)
        -13.0
        >>> # complex型の 2 + 2j を 2 で除算
        >>> complex_a = (2 + 2j) / 2
        >>> print(complex_a)
        (1+1j)
        >>>
    
  • 除算(//) ※商のみ
    除算(//)は、演算結果の商(整数部のみ)を返す。

    $ python
        >>>
        >>> # int型の 6 を 2 で除算 (//)
        >>> int_a = 5 // 2
        >>> print(int_a)
        2.0
        >>> # float型の -6.5 を 0.5 で除算 (//)
        >>> float_a = -5.5 // 0.2
        >>> print(float_a)
        -28.0
        >>> # complex型の除算 (//)はできない
        >>> complex_a = 3j // 2
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        TypeError: "can't take floor of complex number."
        >>>
    
  • 剰余(%)
    除算の演算結果の余りを返す。

    $ python
        >>>
        >>> # int型の 5 に 2 の剰余
        >>> int_a = 5 % 2
        >>> print(int_a)
        1
        >>>
        >>> # float型の 5.5 に 2.5 の剰余
        >>> float_a = 5.5 % 2.5
        >>> print(float_a)
        0.5
        >>>
        >>> # complex型に剰余はできない
        >>> complex_a = 5j % 2
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        TypeError: "can't mod complex numbers."
        >>>
    

べき乗(**)

指数の演算結果(底のべき乗)を返す。

$ python
    >>>
    >>> # int型の 2 の 3 乗
    >>> int_a = 2 ** 3
    >>> print(int_a)
    8
    >>> # int型の 10 の -10 乗
    >>> int_b = 10 ** -10
    >>> print(int_b)
    1e-10
    >>>
    >>> # float型の 2.0 の 2.5 乗
    >>> float_a = 2.0 ** 2.5
    >>> print(float_a)
    5.656854249492381
    >>>
    >>> # complex型の 2 + 2j の 3 を乗算
    >>> complex_a = (2 + 2j) ** 3
    >>> print(complex_a)
    (-16+16j)
    >>>

参考文献

  • 金城 俊哉(2018)『現場ですぐに使える! Pythonプログラミング逆引き大全313の極意』株式会社昭和システム


Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp