Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

Pythonチュートリアルのプログラム例をスクリプト化

囲碁の世界チャンピオンがAlphaGoに勝ったのは凄いですね。昔のAIは大したことしかできませんでしたが、ここ数年の進歩は目覚ましいものがあると思っています。各国・各企業・教育機関でも、AlphaGOをきっかけに、機械学習の研究・開発・利用に拍車がかかっていると思います。機械学習は個人的に非常に興味が湧いたので、勉強を始めることにしました。(最先端のことでも投資無しで簡単に始められる現在のネット状況に感謝)

早速、AlphaGoに強く関係しそうなGoogleのTensorFlowに関し、GoogleがUDACITYで提供している無料講座で勉強を始めました。無料講座では、機械学習に関する色々な概念の説明の後、実際にTensorFlowの使い方を試します。その段階になって、Pythonのプログラムが分からないことに気が付きました。Pythonを知らなくても、コンピュータ言語の一種なので何とかなるだろう思っていたのですが、やはり、Pythonチュートリアルぐらいは終わらせてから、チュートリアルの戻ることにしました。

Pythonの入門講座に関しWebで色々と探したところ、Pythonは米国の教育機関で広く活用されているおかげか、情報やライブラリが充実しており、日本語化もされていることが分かりました。さっそく、日本語版のチュートリアルを読んで勉強しました。その際に、チュートリアルに載っているプログラム例を、スクリプトとしてファイルに抜き出して試しましたので、その結果をGitHubで公開することにしました。

README.mdの抜粋

Python チュートリアルに記載された対話形式でのプログラム実行例から、実行結果を削ってスクリプト部分だけを抜き出し、対話モードではなくファイルとして実行できるようにしたものです。

対話モードでは入力した内容が失われ、再入力が面倒だったりするので、一度ファイルに記載してから実行したいと思いました。そこで、対話形式のプログラム例からスクリプトを抜き出してファイルにしました。なお、対話モードでは、入力した式を評価した結果が表示されますが、コマンドプロンプトからファイルを実行した場合は式の評価結果が表示されないので、一部「print」文を追加しています。

また、ファイルを実行した際に、プログラム例の内容と実行結果が一緒に出力されるようにしています。この目的で、print_and_exec.pyというモジュールを作りました(数行ですが)。例として、次のように記載すると、スクリプトの内容と実行結果が出力されます。また、例外が発生する部分は、try_exec("実行スクリプト")という形で書いておくと、そこで実行が止まらず、例外発生結果が出力されます。

# print_and_exec_example.py
# coding: UTF-8

from print_and_exec import *
print_and_exec(ur'''
"■コード例の説明"
"以下、Pythonのスクリプトを記載"
print "hello world"
try_exec('raise TypeError("Wrong type")')
''')

上記実行結果は下記です。

===========================================================
【スクリプト】
"■コード例の説明"
"以下、Pythonのスクリプトを記載"
print "hello world"
try_exec('raise TypeError("Wrong type")')

【実行結果】
hello world
Error:TypeError('Wrong type',)

自分の学習用に取り纏めたものなので、一部のプログラム例は抜けていたりします。また、自分の理解を深めるために独自のプログラム例を加えたりしています(ch9のComplex classなど)。また、プログラム例で参照するファイルも追加しています(ファイル入出力、パッケージの部分など)。

ご参考まで