「Krita」を始める前にー「Python」の基本的な文法を押さえよう
制御構文とタプルとリスト
プログラムは上から下に順番に実行されます。他にもプログラムの流れを変える「制御構文」があり、その中でも「条件分岐」の「if文」と「繰り返し構文」の「for文」「while文」を解説します。併せて、1個以上(たいてい複数)の変数をまとめて扱える「タプル」と「リスト」についても解説します。
制御構文や関数内の処理文は1インデント字下げしますが、その中でさらに制御構文をスクリプティングする場合はさらにもう1インデント字下げし、さらにその中で制御構文をスクリプティングする場合は…と字下げしていきます。
if文
if文は図4のように条件が成り立つかどうかで分岐する制御構文です。他のプログラミング言語では「switch文」という条件分岐もありますが、Pythonではif文だけで条件分岐を扱います。
次のサンプルスクリプト「if.py」では「i」変数は10より小さくなく30以上でもないので最後の「else」文が処理され、そのことをターミナルに表示します。if文、elif文、else文が成り立ったときの処理文は1インデント字下げします。
・サンプルスクリプト「if.py」# 代入 i = 20 # 分岐構文 if i < 10: # ターミナルに表示 print("iは10より小さい") # 分岐構文 elif i >= 30: # ターミナルに表示 print("iは30以上") # 分岐構文 else: # ターミナルに表示 print("iは10より小さくなく30以上でもない")
for文とタプル
タプルは1個以上の変数をまとめて扱えるものです。ただし初期化のときだけ値を代入できますが、変数のように値を後から入れ替えることはできず、取り出すことしかできません。タプルの要素は「(」「)」で囲います。タプルは「定数」に近いかもしれません。
for文は図5のように範囲の間だけインクリメント(1ずつ追加)された値を変数に入れて処理を実行する繰り返し構文です。for文を繰り返すときの処理文は1インデント字下げします。
次のサンプルスクリプト「for.py」では「tuple」タプルをtuple[i]で取得する方法と、タプルの要素を取り出す方法の2つの方法でfor文をスクリプティングしています。最後の行はタプルには後から値を代入できないのでエラーが出ます。
・サンプルスクリプト「for.py」# タプルの初期化 tuple = ("りんご","みかん","ばなな") # 繰り返し構文 for i in range(0,len(tuple)): # ターミナルに表示 print(tuple[i]) #繰り返し構文 for tup in tuple: # ターミナルに表示 print(tup) # エラー tuple[0] = "いちご"
while文とリスト
「リスト」は他のプログラミング言語ではよく「配列」と言われます。リストは1個以上の変数をまとめて扱うことができ、また後からも値を代入できるタプルのようなものです。リストの要素は「[」「]」で囲います。
while文は図6のように条件が成り立つ間だけ処理を実行する繰り返し構文です。次のサンプルスクリプト「while.py」では「list」リストの後ろに“いちご"要素を追加(append)し、listリストの最後の要素を削除(pop)しています。while文を繰り返すときの処理文は1インデント字下げします。
・サンプルスクリプト「while.py」# リスト list = ["りんご","みかん","ばなな"] # リストに追加 list.append("いちご") # ループ構文 while len(list) > 0: # ターミナルに表示 print(list[-1]) # リストから削除 list.pop()
関数と引数と戻り値
関数は1行以上のプログラムをまとめることで、似たようなプログラムを何度もスクリプティングする手間をなくすための文法です。似たような処理を1つにまとめることができ、何万回と似たような処理を繰り返す場合などに必要です。
次のサンプルスクリプト「kansu.py」では、引数を2倍して取得する「kansu」関数をスクリプティングしています。関数には引数を渡せますが、引数のデフォルト値(このサンプルスクリプトではmultiply=2)を設定することもできます。関数内の処理文は1インデント字下げします(図7)。
・サンプルスクリプト「kansu.py」# 関数 def kansu(hikisu,multiply=2): # 計算 modoriti = hikisu * multiply # 戻り値 return modoriti # 関数呼び出し i = kansu(2) # ターミナルに表示 print(i)
モジュール
モジュールは他のpyファイルを呼び出す機能です。次のサンプルスクリプト「module.py」のように「import文」で呼び出します。モジュールも同じPythonのスクリプトです。
次のサンプルスクリプト「module.py」では、乱数を取得する「random」モジュールを呼び出し、randomモジュールのrandom関数を実行して0~1未満のランダムな小数を取得してターミナルに表示します。
・サンプルスクリプト「module.py」# モジュールの読み込み import random # モジュールの読み込み import random as rand # ターミナルに表示 print(random.random()) print(rand.random())
おわりに
今回は、実際にPythonをスクリプティングしてKritaで絵を描く前に、Pythonの文法の中から、特に「変数」「データ型」「計算式」「タプル」「リスト」「辞書型」「制御構文」「関数」「モジュール」について解説しました。「クラス(class)」の文法については、また次回以降で実際に扱う際に詳しく解説する予定です。