Pythonプログラミング
Python(パイソン)というプログラミング言語が注目を集めている.先に紹介したScratch言語はPython言語に変換可能ということでもあり,ずっと気になっていた.80歳近くなって今更の感が強いが,情報処理教育では学生に「フローチャートが書ければ,言語を問わずプログラムを作ることは簡単」と指導してきた手前,ボケ防止に一歩踏み出してみた.
理解するのに時間が要るようであれば,「ボケの進行」を自覚せざるを得ないと思いながらWeb検索すると,Pythonの情報が溢れているのに驚いた.早速ウキペディアで調べると,簡単なプログラムから統計処理,Web開発,ゲーム,ロボット,人工知能に至るまで,Pythonで作られているという.YouTubeやインスタグラム等もPythonらしい.
このような情報処理環境の変化に対応して,中国では学校のプログラミング教育で使われる言語が次々とPythonに切り替えられているという.日本でも有名私立大学ではPythonを使っているところが増えており,講義資料も公開されている.さっそく参考にさせてもらった.
プログラム言語を勉強するためには,パソコンで実行する環境を構築する必要がある.そのために投資が必要なケースもあるが,Pythonはフリーで利用できる.さらに,Python用の統合開発環境(IDLEと略記:Integrated DeveLopment Environment)はクロスプラットホームで使えるので,Windows、MacOS、Linuxなどで同じ環境のもとにpythonプログラムを開発することが可能である.MacOS には最初からPython 2が準備されているが,最新バージョン Python 3 を利用するにはダウンロードする必要がある.プログラムの入力,保存,実行は,Python IDLEを使って行う.プログラムは test.py のように拡張子(,py)を付けて保存する.
Python 3 をインストールするには,パッケージ管理ツール Homebrew を利用するとたいへん便利である.以下は統合開発環境構築の手順である.時間はかかるが入力するのはパスワード程度である.
注)アプリケーションの中からターミナルを起動し,キーボードでコマンドを入力してパソコンを操作する方法(CUI)を経験した人を前提としている.
Python実行環境の準備
Last login: Sat May 26 15:06:46 on console → ターミナルの画面
KH$ python --version 現在のバージョンを調べる
Python 2.7.10 Python 2レベルである.
KH$ brew install python3 → 最新バージョンをインストール
-bash: brew: command not found → macOS 用パッケージマネージャーbrewが見つからない
パッケージマネージャーbrewのインストール
macOS 用パッケージマネージャー - Homebrewのホームページを開き,指示されているスクリプトをターミナルに貼り付け実行する(次行).
KH$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
==> This script will install:
/usr/local/bin/brew
中略 40行程度のメッセージが表示される
==> The Xcode Command Line Tools will be installed.
Press RETURN to continue or any other key to abort → 続行するならリターンキーを押す
==> /usr/bin/sudo /bin/chmod u+rwx /usr/local/bin /usr/local/include /usr/local/lib /usr/local/share /usr/local/lib/pkgconfig /usr/local/share/man /usr/local/share/man/man1
Password: パスワード入力
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/bin /usr/local/include /usr/local/lib /usr/local/share /usr/local/lib/pkgconfig /usr/local/share/man /usr/local/share/man/man1
中略 140行程度のメッセージが表示される
==> Installation successful!
==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics.html
==> Next steps:
- Run `brew help` to get started
- Further documentation:
Python 3 のインストール実行
khmini-no-mac-mini-3:~ KH$ brew install python3
==> Installing dependencies for python: gdbm, openssl, readline, sqlite, xz
==> Installing python dependency: gdbm
==> Downloading https://homebrew.bintray.com/bottles/gdbm-1.14.1_1.high_sierra.b
######################################################################## 100.0%
中略 90行程度のメッセージが表示される
See: https://docs.brew.sh/Homebrew-and-Python
==> Summary
🍺 /usr/local/Cellar/python/3.6.5: 4,736 files, 99.2MB
Python 3インストールの終了
khmini-no-mac-mini-3:~ KH$ which python3 Python3は何処?
/usr/local/bin/python3 → インストールの場所
KH$ python3 --version → バージョン?
Python 3.6.5
khmini-no-mac-mini-3:~ KH$ idle3 → Python用の統合開発環境(IDLEと略記:Integrated DeveLopment Environment)を起動
別ウインドウが開く
お決まりのプリント文(関数と呼ぶべき)を実行して正常に動くかチェック
>>> print('Hello Pyton') → 左のプリント文を入力し,メニューから実行
Hello Pyton → 正常に表示
>>>
私はプログラミング言語に出会ったら九九算プログラムを作り実行するようにしている.Python3では4行で以下に示す結果を得ることができた.これまででもっとも少ない行数と言えそうである.約束事が異なるだけで,文法の基本は他言語と同じである.
繰り返し二重文は,forを二重にして範囲を決めるだけでよい.Python 3のプリント関数では,変数,書き出す書式(format) やオプションは括弧内に記載する.end=' 'は改行しないようにするために必要である.'%2d 'は「二桁と空白」で掛け算の結果を表示することを意味する.
九九算のプログラム
Python 3の書式の場合は, print( "{:2d}{:s}".format(i*j, " "), end='') を用いる.
実行結果
WARNINGが出ている通り,日本語変換に問題がある.最新版では改善されている.追記参照
ご覧のとおりである.同じプログラムを他の言語で書くと以下のようになる.
パターン処理言語AWK
C言語
BASIC言語
単純な構文
次例は平均値の計算プログラムである.データはPythonの特徴のひとつであるリスト(多言語の「配列」に似たもので、[ ] の中にカンマで区切られた要素で構成)で与えている.データ数は2行目のlen関数で,合計値は3行目のsum関数で得られるので,4行目で割り算をすれば,平均値が得られる.print文は結果の表示である.データの個数分,積算を繰り返す必要がないので単純明快である.リストにデータを流し込むだけでよい.
平均値の計算
グラフィックス
Pythonにはタートル・グラフィックス を描画するための標準モジュール turtle が備わっている.turtleパッケージをimportするためには,from turtle import * と記述する.亀がペンを持って移動する際,その軌跡が描かれるというものである.ベンゼン分子等の六員環を描く実例で理解してほしい.図は別ウインドウに表示される.
1行目 turtleパッケージをインポート
2行目 ペンの色を指定
3行目 rightはX軸との角度,初期角度(30度 )
4行目 forによる繰り返しはインデント(字下げ)されている部分が対象になる.多言語で用いられる範囲を示すfor~nextのようなステートメントは必要としない.
5行目 forwardは歩数
6行目 角度60度
circle, left. penzsize 関数を使用すると次図のような模様を描くことができる.
Matplotlib(描画ライブラリ)
Python言語およびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリであるMatplotlibを利用すると簡単にグラフを描くことができる.次図は熊本の月別最高気温(過去30年間の平均値)をプロットしたグラフである.月,気温データはそれぞれリスト(m,t)で与えている.
熊本の月別最高気温(過去30年間の平均値)をプロットしたグラフ
先にScratchプログラミングについて紹介したが,Python言語との対応を知る上で格好の記事がある.「コドモとアプリ」のホームページに「ScratchとPythonの対応表の日本語版を作りました」という記事が掲載されていて,画像が共有できるようになっているので以下に示した.
Python言語では,単純化が図られているため,古い言語と較べると異なるところもある.当初,2次元配列がないと思ったが,調べるとリストを入れ子にすれば二次元配列に対応できることが分かった.
変数,予約語,関数,条件分岐文,データ入力,リスト(配列),ファイル操作等も多言語プログラミングを一度でも経験したことがあれば問題なく理解できる.入門書を購入しなくともWeb上の記事で独習できるので挑戦してみてほしい.
追記
mac OS 10.13.4の場合,最初にインストールしたPython 3.6.5 (IDLEのTK version 8.5.9)では,日本語変換が不調のため,平成30年年6月7日時点のインストーラをダウンロードし,アプリケーションフォルダにインストールされた最新版(IDLEのTK version 8.6.8 )は日本語変換は正常であった.Matplotlibは再インストールする必要がある.