「Krita」を始める前にー「Python」の基本的な文法を押さえよう

2024年7月2日(火)
大西 武 (オオニシ タケシ)
第2回の今回は、「Krita」を始める前に、まず「Python」の「変数」「データ型」「制御構文」「関数」などの基本的な文法について解説します。

制御構文とタプルとリスト

プログラムは上から下に順番に実行されます。他にもプログラムの流れを変える「制御構文」があり、その中でも「条件分岐」の「if文」と「繰り返し構文」の「for文」「while文」を解説します。併せて、1個以上(たいてい複数)の変数をまとめて扱える「タプル」と「リスト」についても解説します。

制御構文や関数内の処理文は1インデント字下げしますが、その中でさらに制御構文をスクリプティングする場合はさらにもう1インデント字下げし、さらにその中で制御構文をスクリプティングする場合は…と字下げしていきます。

if文

if文は図4のように条件が成り立つかどうかで分岐する制御構文です。他のプログラミング言語では「switch文」という条件分岐もありますが、Pythonではif文だけで条件分岐を扱います。

次のサンプルスクリプト「if.py」では「i」変数は10より小さくなく30以上でもないので最後の「else」文が処理され、そのことをターミナルに表示します。if文、elif文、else文が成り立ったときの処理文は1インデント字下げします。

図4:if文

・サンプルスクリプト「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文をスクリプティングしています。最後の行はタプルには後から値を代入できないのでエラーが出ます。

図5: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インデント字下げします。

図6:while文

・サンプルスクリプト「while.py」
# リスト
list = ["りんご","みかん","ばなな"]
# リストに追加
list.append("いちご")
# ループ構文
while len(list) > 0:
  # ターミナルに表示
  print(list[-1])
  # リストから削除
  list.pop()

関数と引数と戻り値

関数は1行以上のプログラムをまとめることで、似たようなプログラムを何度もスクリプティングする手間をなくすための文法です。似たような処理を1つにまとめることができ、何万回と似たような処理を繰り返す場合などに必要です。

次のサンプルスクリプト「kansu.py」では、引数を2倍して取得する「kansu」関数をスクリプティングしています。関数には引数を渡せますが、引数のデフォルト値(このサンプルスクリプトではmultiply=2)を設定することもできます。関数内の処理文は1インデント字下げします(図7)。

図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)」の文法については、また次回以降で実際に扱う際に詳しく解説する予定です。

著者
大西 武 (オオニシ タケシ)
1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書など30冊以上を商業出版する作家。Microsoftで大賞やNTTドコモでグランプリなど20回以上全国区のコンテストに入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」が全国放送のTVで約10回出題。
https://profile.vixar.jp

連載バックナンバー

開発言語技術解説
第10回

「Krita」と「Python」のクラスで画像を加工しよう

2024/12/13
第10回の今回は「Krita」で「Python」のクラスを使ってプログラミングして、開いた画像ファイルに擦りガラス加工などをする解説をします。
開発言語技術解説
第9回

「Krita」と「Python」でクラスの文法を身につけよう

2024/11/22
第9回の今回は「Krita」と「Python」で、オブジェクト指向プログラミングができる「クラス」の文法を解説します。
開発言語技術解説
第8回

「Krita」と「Python」でUIパーツを構築してみよう

2024/11/1
第8回の今回は「Krita」で「Python」をプログラミングして、ボタンやスライダーなどのUIパーツを構築する解説をします。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています