ラズベリーパイを使ったプログラミングの入門的な記事です。
今回は、Python(パイソン)の初歩について書きます。
Pythonとは?
Pythonは、オランダ出身のグイド・ヴァンロッサム氏が開発した、こちらもオブジェクト指向のスクリプト言語です。
Raspbian をインストールしている環境では、pythonは標準で使えるようになっているはずです。
プログラム言語の中でも人気が高い言語であり、特に近年目覚ましく発展しているDeep Learningの処理系でもよく使われていることから、人工知能の学習をするためには必須の言語とも言えます。
PythonでHello world.
Python で書いたプログラムの例です。(サンプルはPython2のものです。)
1 2 3 4 5 | import sys <span class="strike">print</span>('Hello world.') sys.exit(0) |
Pythonでは、変数や文字列の表示のために、printという関数を使用します。
また、Rubyのhello worldのサンプルに合わせて、終了ステータスを返すようにするために、sys.exit(0)という記述を5行目にいれましたが、”Hello world.”を表示する目的だけなら不要です。
1行目のimportは、5行目のsys.exitを書くための準備です。
いつもの leafpad を使って、上記を記述したファイルを作ります。LX Terminalを起動して、
1 | $ leafpad hello.rb |
を実行して、プログラムを書きます。ファイル名は、 hello.py としておきます。
次にこれを実行する方法ですが、LX Terminal上で、次のようにコマンドラインで実行します。
1 | python hello.rb |
と打ち込めば実行できます。
Rubyのときと同じですが、このコマンドは「python というインタープリタで hello.pyを実行する」という意味になります。
“Hello world.”と表示されればOKです。
Python スクリプトの「インデント」には意味がある
これはPythonの特徴の一つでもありますが、スクリプトを書くときのインデントについては注意が必要です。
hello.pyのprintの行について、先頭に空白を一つ入れてみましょう。
1 2 3 4 5 | import sys print('Hello world.') sys.exit(0) |
これを実行すると、次のようなエラーが表示されると思います。
1 2 3 4 5 | $ python hello.py File "hello.py", line 3 print('Hello world.') ^ IndentationError: unexpected indent |
このように先頭に余分なインデントがあると、Pythonのスクリプトはうまく動きません。これは、このサイトで取り上げているシェルスクリプトやRubyには無い特徴です。
Pythonでは、このインデントが重要な意味を持ちます。それは、同じ数の空白でインデントされた文のひとつづきがブロックとみなされるという点です。
1 2 3 4 5 | a=2 if a==2: print "a is 2" print "hello." print "end" |
先ほど述べた終了ステータスの記述については省略しました。
この例の2行目のif文ですが、このif文で実行される行は3行目と4行目です。それを、インデント(空白2個)で表現しています。
5行目はif文の外ということになります。
例えばRubyでは、if文の終わりにendと書きましたが、Pythonでは不要です。その代わりにどこまでがif文の範囲なのかをインデントで表現するわけです。
インデントは空白2個分とは限りません。1個でも3個以上でもよいのですが、個数は揃える必要があります。
1 2 3 4 5 | a=2 if a==2: print "a is 2" print "hello." print "end" |
hello4.pyのように、ひとかたまりのブロックにおけるインデントの数を2個、3個とバラバラに書くと、これもエラーとなります。