算術計算

基本的な算術計算の方法を確認しておきましょう.

四則演算

まず整数, 小数の加減乗除を確認しておきます. 四則演算を表す記号として 加算 +, 減算 -, 乗算 *, 除算 / を用います. 除算以外の演算は, 整数と整数の演算結果は整数になり, 1つでも小数が入る演算は結果が小数になります. 除算の結果は必ず小数になります. (Python 3 をインストールしていますね?)

In [1]: 10 + 15
Out[1]: 25

In [2]: 1.0 + 3.0
Out[2]: 4.0

In [3]: 30 - 15.0
Out[3]: 15.0

In [4]: 30 * 2
Out[4]: 60

In [5]: 1.5 * 8
Out[5]: 12.0

In [6]: 30 / 2
Out[6]: 15.0

変数どうしの演算, 変数と数リテラルの演算についても同様です.

In [7]: x, y, z = 0.5, 2, -0.5

In [8]: x + y
Out[8]: 2.5

In [9]: y - z
Out[9]: 2.5

In [10]: y * z
Out[10]: -1.0

In [11]: x / y
Out[11]: 0.25

In [12]: x + 1
Out[12]: 1.5

In [13]: 0.1 * y
Out[13]: 0.2

ゼロで割ると, ZeroDivisionError というエラーになります.

In [14]: x / 0.0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-14-471d68afd61a> in <module>()
----> 1 x / 0.0

ZeroDivisionError: float division by zero

その他の演算

# 負号
In [15]: z = 10

In [16]: -z
Out[16]: -10

# べき乗
In [17]: 2 ** 10
Out[17]: 1024

In [18]: - 1**2
Out[18]: -1

In [19]: 2 ** -1
Out[19]: 0.5

In [20]: (-1) ** -0.5
Out[20]: (6.123233995736766e-17-1j)

# 商
In [21]: 100 // 3
Out[21]: 33

# 剰余
In [22]: 100 % 3
Out[22]: 1

math モジュール

\(log\)\(exp\) などの数学関数は math モジュール (他のPythonスクリプトから呼び出されて使うことを意図されたツール群のこと) を読み込むことで使えるようになります. モジュールを読み込むための文法は:

import [モジュール名]
import [モジュール名] as [別名]
from [モジュール名] import [関数名, クラス名 etc]

これらの用法は使っているうちに分かってくると思います.

Python における関数というのは, 数学における関数・対応・変換などと似た概念のオブジェクトです. 関数に入力として値を渡すと, 値が出力されます. 入力値のことを 引数 と呼びます. 出力値のことを 戻り値 と呼びます. 基本的な使い方は, 次の通りです:

関数名(引数1 [,引数2, ...])
In [23]: import math

# インタラクティブシェルが自動的に戻り値を表示する
In [24]: math.log(2.7)
Out[24]: 0.9932517730102834

In [25]: math.log10(10.0)
Out[25]: 1.0

In [26]: math.exp(1.0)
Out[26]: 2.718281828459045

In [27]: math.exp(-1.0)
Out[27]: 0.36787944117144233

math.log() は負数を引数に取ることができません.

In [28]: math.log(-1.0)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-28-7c7e3fb9f4aa> in <module>()
----> 1 math.log(-1.0)

ValueError: math domain error

このノートでは, Numpy/Scipy という科学計算ライブラリを利用しますので, math モジュールを使うことはほとんどありません. しかし, 次の重要な違いを認識しておいてください: math モジュールはすべてのPython実装と同時にインストールされる 標準ライブラリ の一部である一方で, Numpy/Scipy はユーザーが自らインストールする必要のあるサードパーティー製ライブラリです. あなたが作ったプログラムを使うユーザー層に応じて使い分ける必要があります.

注意

Python の関数は意味のある戻り値を返さないこともあります. 例えば, 入力としてファイルを受け取り, ファイルの内容を所定のフォーマットに変換するような関数を書いたとしましょう. インターネットで取得したデータを分析しやすいように整形するというような例です. この場合には, 関数はファイル操作をしているだけで, 特別な値を返す必要はありません. 数学の関数と類似の概念とはいえませんが, しだいに慣れてくるでしょう.

なお, 意味のある出力をしない関数でも None という特別な値を出力します.