Pythonの基本

Image from Gyazo

Pythonとは

Python はオランダ出身のプログラマーGuido Van Rossum氏が1991年に開発したプログラミング言語です. C言語やJavaに比べ,文法がシンプルであり,高い可読性を持っています. 例えば,多くのプログラミング言語では,コードの固まり(ブロック)を {}(中括弧) で表現することが多くあります. 一方,Pythonでは, 字下げ(インデント) を利用して,ブロックを表現します. また,豊富なライブラリが利用可能であり,パッケージ管理ツール(pipなど)を利用して,手軽に導入可能という特徴もあります.

コーディング実行デバッグ という一連のプロセスも簡単であり, 手を動かしながら学ぶには最適なプログラミング言語と言えるでしょう. 今回は,人工知能技術を学ぶ前準備として, Python の基本的な文法について学びます.

ノートブックの作成

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

四則演算

一般的な四則演算が利用可能です. セルに加算(+),減算(-),乗算(*),除算(/),剰余(%),累乗(**)を入力して,結果を確認してみましょう. 乗算・除算などは,我々が通常用いている$\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 関数を用いても良い).

種類データ型
整数int1, 10, 100
実数float0.1, 1.1, 10.1
文字列str“abc”, “あいう”
真理値boolTrue, 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

文字列に変数を埋め込んで出力するときは, f文字列(フォーマット済み文字列) を利用すると便利です. 例えば,変数x,yを出力するとき,print関数を利用して下記のように記述できます. 引数として与える文字列の先頭にfを付け,文字列中の変数は{x}を表します.

[In:]

print(f"x={x} y={y}")

[Out:]

x=2 y=0.5

リストとタプル

複数のデータをまとめて扱う場合は,リスト または タプル を用います. リストは値を書き換えることが出来ますが,タプルでは書き換えが出来ないという特徴があります. リストとタプルの要素には,要素番号を用いて参照します. このとき,要素番号は 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==baとbは等しい
a!=baとbは異なる
a>baはbより大きい
a>=baはb以上
a<baはbより小さい
a<=baは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

課題

下記の2次方程式の解を 解の公式 を用いて導出しなさい.

$$ x^2+6x+8 = 0 $$

平方根を算出するには mathモジュール を利用する.

import math
print(math.sqrt(4)) # -> 2.0

Google Colaboratoryで作成した AI-2.ipynb を保存し, ノートブック(.ipynb) をダウンロードして提出しなさい. 提出の前に必ず下記の設定を行うこと.

  • ノートブックの設定で「セルの出力を除外する」のチェックを外す
  • ノートブックの変更内容を保存して固定