制御構文_1(Python_04)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回は、基本的なデータ操作について学んでみました。

今回からプログラムの神髄、制御構文について学んでいきたいと思います。

プログラムの3つの制御構造

たいていのプログラムは、以下の3つの制御構造から成り立っています。

  1. 順次処理 :処理を上から順番(記述順)に実行する。
  2. 選択処理 :条件の結果に応じて異なる処理を実行する。
  3. 反復処理 :条件を満たす間、同じ処理を繰り返し実行する。

Pythonによるプログラムも例外ではありません。このうち順次処理はコードを順番に記述するだけですので、込み入った構造にはなりません。これに対して選択処理、反復処理には用途に対応するための命令があります。

選択処理

まずは選択処理から見ていきましょう。

比較演算子

選択処理を行うには、選択のために何らかの判定をしなければなりません。この時に使用するデータ型がブール型です。ブール型は条件が正しい(True)か正しくない(False)かどちらかの値を取ります。2つの値を比較して、その結果を判定する場合に比較演算子を使用します。2つの値を比較演算子で挟んで使用します。

演算子 説明
== 2つの値が等しい場合にTrueを返す
!= 2つの値が等しくない合にTrueを返す
< 左の値が右の値より小さい場合にTrueを返す
<= 左の値が右の値以下の場合にTrueを返す
>= 左の値が右の値以上の場合にTrueを返す
> 左の値が右の値より大きい場合にTrueを返す
in 左の要素が右の要素に含まれる
not in 左の要素が右の要素に含まれない

論理演算子

2つ以上の判定結果をもとに判定する場合には、and演算子、or演算子で判定結果を繋げて、その結果で判定します。また、判定結果を反転させたい場合はnot演算子を使用します。

演算子 説明
and 2つの値が両方ともTrueの場合にTrueを返す
or どちらかの値がTrueの場合にTrueを返す
not Falseの場合はTrue、Trueの場合はFalseを返す

たとえば、変数xが10以上で、20より小さいかどうかを判定する場合には

10 <= x and x < 20

と書けます。またPythonでは上の条件を以下のように簡略化して書くこともできます。

10 <= x < 20

便利でわかりやすい記述方法ですね。

ブール値以外の型の判定

ブール型のデータはそのまま判定されるのですが、それ以外のデータ型は以下のように判定されます。

データ型 TRUE FALSE
数値 0以外 0
文字列 長さ1以上の文字列 空文字
リストなど 要素が1つ以上存在 要素が0

if文

Pythonでは選択処理を記述する場合、if文を使うことが一般的です。以下のように記述します。

if 条件式:
    # 処理

条件式にはブール値を返す値、数式が記述されます。処理の部分に処理のスクリプトを記述するのですが、この部分はインデント処理をする必要があります。インデントされている部分がif文の対象となり、インデントを解除するとif文以降の処理になります。

この記述では判定結果で処理をする、しないの選択のみでした。複数の処理を選択するようにするには、elif文、else文を合わせて使用します。以下のように記述します。

if 条件式A:
    # 処理1
elif 条件式B:
    # 処理2
else:
    # 処理3

条件式AがTrueの場合は処理1、条件式AがFalseで条件式BがTrueの場合は処理2、条件式A、Bが共にFalseの場合は処理3が実行されます。以下は記述例です。

rank = 80

if rank >= 90:
  print('すごいですね')
elif rank >= 75:
  print('がんばりましたね')
elif rank >= 50:
  print('ギリギリでしたね')
else:
  print('残念でしたね')

elif文は複数記述できます。else文を記述した後の判定は行わないので、必ず最後に記述しましょう。

その他の選択処理

JavaScriptやCではswitch文、VBAではSelect Case文など1つの式を複数の条件で評価する方法があるのですが、Pythonにはそのような構文はありません。全部if文で済ませちゃってます。バージョン3.10以降になるとmatch文なるものが追加されるのですが、ちょっと毛色が違うので、ここでは紹介しません。

次回は反復処理

いかがでしょうか。これらの制御構文を自在に使いこなせるようになれば、プログラムが楽しくなってきますね。次回も制御構文です。反復処理について学びま

hirocom777.hatenadiary.org Python再学習のまとめはこちら!!