for文について(https://augmented-vr.com/using-for-loops-in-python/)学習しましたが、繰り返し処理してる時に特定の条件の時だけ別の処理を行いたいとなるときがあります。そのような条件によって処理の内容を分けることを可能にするのが「if文」です。

if文を使用する

Pythonでif文を使用するにはif、条件を表す式(条件式)、コロン「:」を使います、その一つ下の行にインデントをして条件が真(True)の時にしてほしい処理のコードを書きます。なので例としてif文は、

if 条件式:
    コード


の形式で記述します。この例ではインデントは半角スペース四つで行っています。統一しているならインデントは半角スペース二つなどでも構いません。
では、実際にやってみましょう。
GoogleColaboratoryを開いて新しいノートブックを開き

x = 10
if x > 5:
  print(f"{x}は5より大きい")

と入力し実行してみましょう。すると結果は

10は5より大きい

と表示されます。これは一行目で変数xに10を代入し、二行目にif文の条件式、三行目でif文が真の場合に行う処理を書いています。今回は変数xは10なので条件式のx>5は真になるので三行目の処理が行われ「10は5より大きい」という文字列が出力されます。

では条件式を満たしていないときはどうなるかも確認してみましょう。

x = 1
if x > 5:
  print(f"{x}は5より大きい")

とセルに入力して実行してみましょう。すると結果は



何も表示されませんでした。このコードは先ほどとは違い変数xに1を代入しています。それによりif文の条件式のx>5は偽(False)になるので、三行目のコードは実行されず終了しました。このようにif文では条件式が真でない場合はif文のインデントされた部分のコードは実行されません。

次にif文の条件式が偽の時に処理を実行する方法を試してみましょう。if文が偽の時に処理を実行するにはelseを使います。elseを使うときはif文の後にインデントがifと同じ位置にelseとコロン「:」を使い、その下にインデントをして偽の時にしてほしい処理のコードを書きます。なのでelseを使うときの例は

if 条件式:
    真の時に処理してほしいコード
else:
    偽の時に処理してほしいコード

の形式で記述します。
では実際にやってみましょう。

b = False
if b:
  print("これは真です")
else:
  print("これは偽です")

とセルに入力します。Pythonのif文の条件式にbool型を使用するとTrueの場合は真、Falseの場合は偽の処理を実行してくれます。なので上のコードでは偽として実行されます。では実行してみましょう。すると結果は

これは偽です

と表示されます。bにFalseが代入されていたので条件式が真だった時のコードは実行されず、elseの方のコードが実行され「これは偽です」という文字列が表示されます。ではbにTrueが代入されてたらどうなるかも確かめてみましょう。

b = True
if b:
  print("これは真です")
else:
  print("これは偽です")

とセルに入力して実行してみましょう。すると結果は

これは真です

と表示されます。bにTrueが代入されているとif文の条件式は真になるので真の時のコードが実行され「これは真です」という文字列が表示され、elseの方のコードは実行されませんでした。このようにifとelseを利用することで処理の内容を分けられることがわかりました。次はelifという複数の条件式を使いたいときに使えるものを使ってみましょう。elifを使うときはif文の後にインデントがifと同じ位置にelifと条件式、コロン「:」を使い、その下にインデントをして真の時にしてほしい処理のコードを書きます。elifで条件式が偽だった時は、次のelifの条件式を判定し、全てのelifが偽ならelseで全ての条件式が偽だった時の処理を行います。なのでelifを使うときの例は

if 条件式1:
    条件式1が真の時に処理してほしいコード
elif 条件式2:
    条件式2が真の時に処理してほしいコード
elif 条件式3:
    条件式3が真の時に処理してほしいコード
.
.
.
else:
    全ての条件式が偽の時に処理してほしいコード

の形式で記述します。
では実際にやってみましょう。

score = 70 #点数
#点数が80以上ならA、79以下60以上ならB、59以下40以上ならC、39以下をDと出力する
if score >= 80:
  print("A")
elif score >= 60:
  print("B")
elif score >= 40:
  print("C")
else:
  print("D")

とセルに入力して実行してみましょう。すると結果は

B

と表示されます。このコードは変数scoreに数値を代入し、if文でscoreの数値によって出力する文字列が変わるプログラムです。今回は70を代入したので、最初の条件式の80以上は偽、次の条件式は真なので「B」という文字列が出力されました。そして60以上の条件式で真だったので、その次の条件式の40以上については判定せずこのif文の処理は終了します。なので「B」の文字列が出力された後に次のelifの条件式の40以上の判定を行って真なので「C」の文字列が出力されるということは起こりません。

次はこのコードの条件式の順番を変えたらどのように処理されるか確かめてみましょう。

score = 70 #点数
#点数が80以上ならA、79以下60以上ならB、59以下40以上ならC、39以下をDと出力する
if score >= 40:
  print("C")
elif score >= 60:
  print("B")
elif score >= 80:
  print("A")
else:
  print("D")

とセルに入力して実行してみましょう。すると結果は

C

と表示されます。条件式の順番を変える前のコードではまずは80以上か判定してそれが偽だったら60以上か判定し、さらにそれが偽だったら40以上かの判定をしているので、条件式は実質80以上、79以下60以上、59以下40以上を判定しています。このコードではscoreの数値が70なので本当は「B」の文字列が出力されてほしいですが、条件式の判定は順番にやるので最初の条件式が40以上かの判定になり真になって「C」の文字列が出力され以降の条件式の判定はせず、このif文の処理は終了します。このように条件式の順番が違うと想定していた動きと違うことがあるので注意しましょう。

次は最初に想定した繰り返し処理中にif文を使ってみましょう。for文やリストも使うので復習も兼ねてやっていきましょう。

score_list = [70, 80, 55, 30, 100, 0]
for score in score_list:
  if score >= 80:
    print("A")
  elif score >= 60:
    print("B")
  elif score >= 40:
    print("C")
  else:
    print("D")

とセルに入力して実行してみましょう。すると結果は

B
A
C
D
A
D

と表示されます。これは最初に複数個の数値が入ったリストscore_listを作り、その数値を一つずつ変数scoreに代入し、それをif文で判定しています。このようにif文とfor文を使うことで複数個の処理を短くかつ分かりやすく書くことができます。

ちなみにこれはfor文の便利さの例になりますが、この処理をfor文を使わずにかつ、elif、elseを使わないで書くとこうなります。

score1 = 70
if score1 >= 80:
  print("A")
if 80 > score1 >= 60:
  print("B")
if 60 > score1 >= 40:
  print("C")
if 40 > score1:
  print("D")

score2 = 80
if score2 >= 80:
  print("A")
if 80 > score2 >= 60:
  print("B")
if 60 > score2 >= 40:
  print("C")
if 40 > score2:
  print("D")

score3 = 55
if score3 >= 80:
  print("A")
if 80 > score3 >= 60:
  print("B")
if 60 > score3 >= 40:
  print("C")
if 40 > score3:
  print("D")

score4 = 30
if score4 >= 80:
  print("A")
if 80 > score4 >= 60:
  print("B")
if 60 > score4 >= 40:
  print("C")
if 40 > score4:
  print("D")

score5 = 100
if score5 >= 80:
  print("A")
if 80 > score5 >= 60:
  print("B")
if 60 > score5 >= 40:
  print("C")
if 40 > score5:
  print("D")

score6 = 0
if score6 >= 80:
  print("A")
if 80 > score6 >= 60:
  print("B")
if 60 > score6 >= 40:
  print("C")
if 40 > score6:
  print("D")

出力結果は同じですが、コードの長さがかなり違います。この長さのコードを短くできるfor文の便利さがわかりますね。そしてこれではelifとelseを使わずに条件分岐を書きましたが、この書き方なら順番で条件式が変わったりはしません。同じ処理結果になっても書き方を変えてみるのはいい練習になるのでいろいろと試してみてください。

open-in-colab

今回はこれで終了です。今回のサンプルを用意したので、もし必要な場合は上の「Open in Colab」と書いてあるボタンをクリックしてください。なおそのままだと編集不可なので編集をしたい場合は「ドライブにコピー」をクリックしてコピーしてください。
なおGoogleColaboratoryについてわからなかったらGoogleColaboratoryを使ってみよう_導入編をご覧ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA