======== 算術計算 ======== 基本的な算術計算の方法を確認しておきましょう. 四則演算 ======== まず整数, 小数の加減乗除を確認しておきます. 四則演算を表す記号として 加算 ``+``, 減算 ``-``, 乗算 ``*``, 除算 ``/`` を用います. 除算以外の演算は, 整数と整数の演算結果は整数になり, 1つでも小数が入る演算は結果が小数になります. 除算の結果は必ず小数になります. (Python 3 をインストールしていますね?) .. ipython:: In [35]: 10 + 15 Out[35]: 25 In [36]: 1.0 + 3.0 Out[36]: 4.0 In [37]: 30 - 15.0 Out[37]: 15.0 In [38]: 30 * 2 Out[38]: 60 In [39]: 1.5 * 8 Out[39]: 12.0 In [40]: 30 / 2 Out[40]: 15.0 変数どうしの演算, 変数と数リテラルの演算についても同様です. .. ipython:: In [42]: x, y, z = 0.5, 2, -0.5 In [43]: x + y Out[43]: 2.5 In [44]: y - z Out[44]: 2.5 In [45]: y * z Out[45]: -1.0 In [46]: x / y Out[46]: 0.25 In [47]: x + 1 Out[47]: 1.5 In [48]: 0.1 * y Out[48]: 0.2 ゼロで割ると, ``ZeroDivisionError`` というエラーになります. .. ipython:: :okexcept: In [49]: x / 0.0 --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) in () ----> 1 x / 0.0 ZeroDivisionError: float division by zero その他の演算 ============= .. ipython:: # 負号 In [50]: z = 10 In [51]: -z Out[51]: -10 # べき乗 In [52]: 2 ** 10 Out[52]: 1024 In [53]: - 1**2 Out[53]: -1 In [54]: 2 ** -1 Out[54]: 0.5 In [55]: (-1) ** -0.5 Out[55]: (6.123233995736766e-17-1j) # 商 In [56]: 100 // 3 Out[56]: 33 # 剰余 In [57]: 100 % 3 Out[57]: 1 `math` モジュール ===================== :math:`log` や :math:`exp` などの数学関数は `math` モジュール (他のPythonスクリプトから呼び出されて使うことを意図されたツール群のこと) を読み込むことで使えるようになります. モジュールを読み込むための文法は:: import [モジュール名] import [モジュール名] as [別名] from [モジュール名] import [関数名, クラス名 etc] これらの用法は使っているうちに分かってくると思います. Python における関数というのは, 数学における関数・対応・変換などと似た概念のオブジェクトです. 関数に入力として値を渡すと, 値が出力されます. 入力値のことを **引数** と呼びます. 出力値のことを **戻り値** と呼びます. 基本的な使い方は, 次の通りです:: 関数名(引数1 [,引数2, ...]) .. ipython:: In [70]: import math # インタラクティブシェルが自動的に戻り値を表示する In [71]: math.log(2.7) Out[71]: 0.9932517730102834 In [72]: math.log10(10.0) Out[72]: 1.0 In [73]: math.exp(1.0) Out[73]: 2.718281828459045 In [74]: math.exp(-1.0) Out[74]: 0.36787944117144233 `math.log()` は負数を引数に取ることができません. .. ipython:: :okexcept: In [75]: math.log(-1.0) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) in () ----> 1 math.log(-1.0) ValueError: math domain error このノートでは, Numpy/Scipy という科学計算ライブラリを利用しますので, ``math`` モジュールを使うことはほとんどありません. しかし, 次の重要な違いを認識しておいてください: ``math`` モジュールはすべてのPython実装と同時にインストールされる **標準ライブラリ** の一部である一方で, Numpy/Scipy はユーザーが自らインストールする必要のあるサードパーティー製ライブラリです. あなたが作ったプログラムを使うユーザー層に応じて使い分ける必要があります. 注意 ^^^^ Python の関数は意味のある戻り値を返さないこともあります. 例えば, 入力としてファイルを受け取り, ファイルの内容を所定のフォーマットに変換するような関数を書いたとしましょう. インターネットで取得したデータを分析しやすいように整形するというような例です. この場合には, 関数はファイル操作をしているだけで, 特別な値を返す必要はありません. 数学の関数と類似の概念とはいえませんが, しだいに慣れてくるでしょう. なお, 意味のある出力をしない関数でも ``None`` という特別な値を出力します.