Pythonを高機能電卓として使おう

書かれた 沿って notbook

本連載では、近年、AIや科学技術計算、統計解析で注目を集めるPythonをゼロから使う方法を紹介している。そもそも、なぜ、Pythonがそうした専門分野で注目されているのかと言えば、科学計算のための充実したライブラリが用意されているからだ。今回は、Pythonを最高級の電卓して使う方法を紹介しよう。

本連載の1回目では、Python3(Anaconda)のインストール方法を紹介した。Pythonがインストールされている環境では、WindowsのPowerShellやコマンドプロンプト、macOSのターミナルで「python」コマンド(macOSでは「python3」)を実行すれば、対話型のPython実行環境が起動する。この実行環境は、よくREPLと呼ばれるので、本連載でもREPLと呼ぶ。

対話型の実行環境(REPL)で計算しているところ

そして、REPLは、高機能な電卓として使うことができる。ただし、ターミナルを起動した後、さらに「python(python3)」とタイプして、初めて使うことができるので、一度きりの計算であれば、標準の電卓アプリには負けてしまう。しかし、当然、電卓以上の計算ができるので、ワンアクション増えるのは気にならない(と思う)。

例えば、1111×1111を計算してみよう。REPLを起動すると、「>>>」と表示される。これは、REPLに入力できることを表す記号だ。そこで、「>>>」に続けて、「1111 * 1111」と入力して[Enter]キーを押す。すると、以下のように表示される。

>>> 1111 * 1111 1234321

それで、REPLは計算を終え結果を表示すると、すぐに「>>>」と表示する。これは、再度別の計算を行わせることができることを意味する。

以前、Pythonでは、かなり大きな数の計算もできることを紹介した。あらためて、1111の1111乗を計算させてみよう。べき乗の計算は、vのn乗であれば「v ** n」のように記述する。以下の計算を実行してみよう。当然だが、ものすごくたくさんの数字が列挙される。

>>> 1111 ** 1111 614213677620841231318558872403334094191..(省略)...

そして、REPLを終了するには「quit()」タイプする。

ところで、通常、コマンドラインの実行を終了するには、[Ctrl]+[c]キーを押すことになっている。もちろん、Pythonで実行したプログラムを途中で強制終了するにも、[Ctrl]+[c]キーが有効だ。しかし、REPLを終了する場合は、「quit()」とタイプする必要がある。

しかし、REPLには欠点もある。REPLは、コマンドラインの中で動作するために、視認性が低いことと、デザイン性が低いという点だ。また、これまでの業務経験から、真っ黒の画面が大嫌いという方も多いことだろう。

そこで活用したいのが、「IDLE(Python Shell)」だ。これは、Pythonをインストールすると、同時にインストールされるツールだ。IDLEを起動するには、Windowsでは「idle」コマンド(macOSでは「idle3」コマンド)を実行する。

使い方は、REPLとほとんど同じだ。しかし、実行結果に色が付くので、コマンドラインよりも、多少見やすくなる。また、IDLEを終了するには、ウィンドウの閉じるボタンを押せば良い。

Pythonを高機能電卓として使おう

Python付属のシェルIDLEを電卓にしているところ

ところで、本連載の二回目では、Jupyterノートブックのインストール方法を紹介した。Jupyterノートブックは、デザインもよく、使い勝手が良い。そして、基本的には対話型の実行環境なので、電卓として使うのに最適だ。

何より、計算結果だけでなく、計算式・計算の根拠となるメモを残しておくことができる。手軽にファイルに保存できるので、考えながら計算を行うのにぴったりだ。

ただし、電卓として使う場合、Jupyterノートブックの起動が面倒だと感じることだろう。PowerShell(ターミナル)を起動した上で、「jupyter notebook」とタイプする必要があるからだ。そこで、手軽にJupyterを起動できるように、バッチファイルを作っておくと良いだろう。

Windowsであれば以下のようなファイルを「jupyter起動.bat」という名前で保存しよう。そうすれば、Jupyterを使う際にダブルクリックで起動できる。

rem Jpyterノートブックを起動する jupyter notebook

Jupyterノートブックをバッチファイルから起動したところ

macOSでも、ダブルクリックで、Jupyterを起動できる。方法だが、まず、以下のようなファイルを「jupyter-run.sh」という名前で保存し、ターミナルから「chmod u+x jupyter-run.sh」で実行権限を付ける。次に、Finderから「情報を見る > このアプリケーションで開く」で、「ターミナル」を指定する。

#!/bin/sh jupyter notebook

既に、Jupyterの詳しい使い方は、連載の2回目で紹介したが、電卓として使う場合の便利なキー操作を紹介しよう。

無事に、Jupyterが起動したら、「Python 3」を指定してノートを作成しよう。

New > Python 3で新規ノートブックを作ろう

次に、「In [1]: 」のテキストボックス(セル)に計算式を書いたら、画面上部にある実行ボタンを押してみよう。すると、Out [1]:のところに計算結果が表示される。

ただし、毎回、マウスで実行ボタンを押していては、効率が悪い。Jupyterノートブックでは、ヘビーユーザーのために、各種機能へのショートカットを用意してくれている。

セルに計算式を入力したら、[Ctrl]+[Enter]キーを押してみよう。すると、式が評価されて計算結果が表示される。さらに、結果を確認したら[b]キーを押してみよう。すると、先ほどの計算結果の下に、新規セルが追加される。

つまり、[Ctrl]+[Enter]キーでセルを評価、そして[b]キーで下にセルを追加する。うまくショートカットーキーを使えば、作業効率アップ間違いなしだ。なお、メニューの[Help > Keybord Shortcut]をクリックすると、いろいろな機能へのショートカットが表示される。

最後に、Pythonを電卓として使う上で欠かせない演算記号や関数を確認しておこう。まずは、四則演算の一覧だ。

演算子意味
a + ba と b を足す
a - ba から b を引く
a * ba に b を掛ける
a / ba を b を割る
a // ba を b で割って小数点以下を切り捨てる
a % ba を b で割った余りを求める
a ** bべき乗。aのb乗を求める

ほかに、以下のような組み込み関数が標準で使える。

関数意味
abs(x)xの絶対値を返す
min(a,b,c...)引数の中で最も小さな値を返す
max(a,b,c...)引数の中で最も大きな値を返す
int(x)数値または文字列を整数にして返す
round(v [,n])値vの小数部をn桁に丸めた値を返す

また、プログラムの冒頭に「import math」と記述すれば、以下のような様々な算術関数が利用できる。

関数意味
math.ceil(x)切り上げ
math.gcd(a, b)aとbの最大公約数を返す
math.log(x [,base])xの自然対数(baseを底とする)を返す
math.sqrt(x)xの平方根を返す
math.cos(x)xの余弦を返す
math.sin(x)xの正弦を返す
math.tan(x)xの正接を返す

なお、上記の関数は、適当な抜粋で、以下のPythonのマニュアルに全ての関数が記されている。いずれも、日本語化されているので、英語が苦手でも安心だ。

●組み込み関数について --- https://docs.python.jp/3/library/functions.html●mathモジュールについて --- https://docs.python.jp/3/library/math.html

このように、さまざまな関数が用意されているPythonを使えば、かなり高度な計算も手軽に行うことができる。Pythonのようなインタプリタ型のプログラミング言語を電卓として使うアイデアは、昔からあるものだが、科学技術計算や統計処理に特化したライブラリを備えるPythonを使うなら、より高度な計算が可能になる。また、別のメリットとしては、Pythonを電卓代わりに使うことで、プログラミングがより身近になり、プログラミングスキルも向上することだろう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。