Pythonの基本

Image from Gyazo

Pythonとは

Python はオランダ出身のプログラマーGuido Van Rossum氏が1991年に開発したプログラミング言語です. C言語やJavaに比べ,文法がシンプルであり,高い可読性を持っています. 例えば,多くのプログラミング言語では,コードの固まり(ブロック)を {}(中括弧) で表現することが多くあります. 一方,Pythonでは,字下げ(インデント) を利用して,ブロックを表現します. また,本授業でテーマとなっている機械学習など,豊富なライブラリが利用可能であり, パッケージ管理ツール(Anacondaなど)を利用して,手軽に導入可能という特徴もあります. コーディング実行デバッグ という一連のプロセスも簡単であり, 手を動かしながら学ぶには最適なプログラミング言語と言えるでしょう. 今回は,強化学習を学ぶ前準備として,Python の基本的な文法について学びます.

ノートブックの作成

Jupyter Notebook を起動し,新規にノートブックを作成してください. ノートブックのタイトルは Notebook2 とします. ノートブックの作成方法は第1回の資料を参照してください.

Image from Gyazo

四則演算

一般的な四則演算が利用可能です. セルに加算(+),減算(-),乗算(*),除算(/),剰余(%),累乗(**)を入力して,結果を確認してみましょう. 乗算・除算などは,我々が通常用いている$\times$や$\div$などの演算子とは異なることに注意してください.

演算 演算子
加算 + 3 + 2 -> 5
減算 - 3 - 2 -> 1
乗算 * 3 * 2 -> 6
除算 / 3 / 2 -> 1.5
剰余 % 3 % 2 -> 1
累乗 ** 3 ** 2 -> 9

[In:]

3 + 2
3 - 2
3 * 2
3 / 2
3 % 2
3 ** 2

[Out:]

5
1
6
1.5
1
9

変数

数値や文字列を記憶するための 変数 を用いることができます. 変数名は,アルファベット,数字,アンダーバー( _ )で構成します(大文字と小文字は区別されます). Pythonでは,明示的に変数の データ型 を宣言する必要はありません. 代入される値に応じて,自動的に変数の データ型 が確定します( 型推論 と呼ばれます). データ型を確認するには,type 関数を用います. 下記のように4つの変数x,y,z,fを定義してみましょう. 変数に代入されている値を確認するには,単に変数名だけを入力すればOKです(もちろん print 関数を用いても良い).

種類 データ型
整数 int 1, 10, 100
実数 float 0.1, 1.1, 10.1
文字列 str “abc”, “あいう”
真理値 bool True, False

[In:]

x = 2 # int
type(x)
y = 0.5 # float
type(y)
z = "abc" # str
type(z)
f = True # bool
type(f)
x # xに代入されている値を出力
y # yに代入されている値を出力
x + y # 加算
x * y # 乗算

[Out:]

int
float
str
bool
2
0.5
2.5
1

リストとタプル

複数のデータをまとめて扱う場合は,リスト または タプル を用います. リストは値を書き換えることが出来ますが,タプルでは書き換えが出来ないという特徴があります. リストとタプルの要素には,要素番号を用いて参照します. このとき,要素番号は 0 から始まることに注意してください. 配列の長さは len 関数で得ることができます.

[In:]

x = [1, 2, 3, 4, 5] # リスト
x
x[2]
x[2] = 6
x
y = (1, 2, 3) # タプル
y
y[1]
y[1] = 4 # エラー
len(x) # リストxの長さ
len(y) # タプルyの長さ

[Out:]

[1, 2, 3, 4, 5]
3
[1, 2, 6, 4, 5]
(1, 2, 3)
2
5
3

if文

条件に応じて処理を分岐させるときには if文 を用います. 条件は ==>>= などの 比較演算子 で表現されます. 例えば, xは正の値 という条件を表現するには,x > 0と記述します. また,多くのプログラミング言語では,{}(中括弧) でブロックを表現しますが, Pythonでは,字下げ(インデント) を利用することに注意してください(字下げ(インデント)するには タブ・キー を入力します). else は省略することも出来ます.

比較演算子 意味
a==b aとbは等しい
a!=b aとbは異なる
a>b aはbより大きい
a>=b aはb以上
a<b aはbより小さい
a<=b aはb以下

[In:]

x = 3 # 正の値を代入
if x > 0:
  print("xは正の値")
else:
  print("xは0または負の値")

x = -3 # 負の値を代入
if x > 0:
  print("xは正の値")
else:
  print("xは0または負の値")

[Out:]

xは正の値
xは0または負の値

for文

特定の処理を繰り返し行うときには for文 を用います. 繰り返しの条件は リスト で表現するという特徴があります. また,リスト の代わりに,range 関数を用いることも可能です. 例えば,range(3)と記述すると,[0, 1, 2]と同じ結果を得ます. ブロックは if文 と同様に 字下げ(インデント) で表現します.

[In:]

for i in [0,1,2]: # リストで繰り返し
  print(i)

for i in range(3): # range関数で繰り返し
  print(i)

[Out:]

0
1
2
0
1
2

参考書籍