Pythonにおける「if」文の構造
プログラミングの基本的な動作の一つ、条件分岐の代表例が「if文」です。if文とはある条件を満たしたときに処理を実行させるときに使います。if文処理の流れは以下の通りです。
if文の条件は理論式で記述し、
結果が「True」:if文内の処理Aを実行
結果が「False」:if文内の処理を実行せずif文を終了
次のステートメントへ移ります。
if文の書き方
「if 条件式 :」を書き、改行して結果が「True」の場合に実行する処理Aを記述します。
実行するステートメントは先頭に半角スペース4個を入れてインデントを入れる必要があります。インデントを入れずにステートメントを書くとif文が終了します。
if 条件式1:
条件1を満たした時の処理1 #先頭に半角スペース4つ
インデント入れずにステートメント(if文が終了)
if文の記述例
では実際にif文を書いてみましょう。ここでは変数「usdjpy」の値が100より高い場合、「sell」と表示させるコードを記述します。
#if文の記述例
usdjpy = 120
if 100 < usdjpy:
print("sell")
#実行すると「sell」と表示されます。
試しに変数「usdjpy」が100未満の数値を代入して、コードを実行してみましょう。if条件に当てはまらないため、空白が表示されます、
#if文の記述例
usdjpy = 90
if 100 < usdjpy:
print("sell")
#実行すると空白が表示されます。
Pythonにおける「if ~ else」 文の構造
条件に合わないときに別の処理を実行したい場合は「if~else」を使います。結果が「True」の場合は処理A、結果が「False」の場合は処理Bを実行することができます。
if ~ else文の書き方
「if 条件式:」を書き、改行して先頭に半角スペース4つのインデントを入れるところまでは先ほどと同じです。改行してインデントを入れずに「else:」を入力し、同様に改行して先頭に半角スペース4つのインデントを入れてステートメントを記述します。
if 条件式1:
条件1を満たした時の処理A #先頭に半角スペース4つ
else:
条件を満たさないときの処理B #先頭に半角スペース4つ
インデント入れずにステートメント(if~else文が終了)
if ~ else文の記述例
では実際にif~else文を書いてみましょう。ここでは変数「usdjpy」の値が100より高い場合、「sell」と表示させ、条件に合わない場合は「buy」と表示させるコードを記述します。
#if~else文の記述例
usdjpy = 90
if 100 < usdjpy:
print("sell")
else:
print("buy")
#実行すると「buy」と表示されます。
上記例では変数「usdjpy」が100未満なので、コードを実行すると「buy」と表示されます。
Pythonにおける「if ~ elif ~ else」文の構造
先ほどの「if ~ else」では条件に合うとき、合わないときの2つの選択肢しかありませんでした。「if ~ elif ~ else」を使うことで複数の条件を付け加えることができ、3つ以上の選択肢を設定することができます。
また、「if ~ elif ~ elif ~elif ・・・else」のように条件の数だけ「elif」を連結することができます。
if ~ elif ~ elseの書き方
「if 条件式1:」を書き、改行して先頭に半角スペース4つのインデントを入れるところまでは先ほどと同じです。改行してインデントを入れずに「elif 条件式2:」を入力し、同様に改行して先頭に半角スペース4つのインデントを入れてステートメントを記述します。この「elif 条件式:」は設定する条件の数だけ入力します。最後に、改行してインデントを入れずに「else:」を入力し、同様に改行して先頭に半角スペース4つのインデントを入れてステートメントを記述します。
if 条件式1:
条件1を満たした時の処理A #先頭に半角スペース4つ
elif 条件式2:
条件2を満たした時の処理B #先頭に半角スペース4つ
else:
条件を満たさないときの処理C #先頭に半角スペース4つ
インデント入れずにステートメント(if~elif~else文が終了)
if ~ elif ~ else文の記述例
では実際にif~elif~else文を書いてみましょう。ここでは変数「usdjpy」の値が100以上の場合「sell」、100以下90以上の場合は「buy」、それ以外は「notrade」と表示させるコードを記述します。
#if~elif~else文の記述例
usdjpy = 80
if 100 <= usdjpy:
print("sell")
elif 90<= usdjpy:
print("buy")
else:
print("notrade")
#実行すると「notrade」と表示されます。
変数「usdjpy」の数値を変えて、条件と一致した表示になるか試してみてください。
randomモジュールを組み合わせる
前回の記事で紹介したrandomモジュールとif文を組み合わせてみましょう。先ほどのコードに80~120の乱数追加してみます。
#randomモジュールとif文を組み合わせる
from random import randint
usdjpy = randint(80, 120)
if 100 <= usdjpy:
print(usdjpy, "sell")
elif 90<= usdjpy:
print(usdjpy, "buy")
else:
print(usdjpy, "notrade")
#実行すると80~120の間でランダムに生成された値とif文の結果が表示されます。
「if」文のネスティング
if文の中にif文を組み込むことでより複雑な条件分岐が可能です。if文の中にif文を組み込むことをネスティングといいます。
if文のネスティング記述例
では実際にif文のネスティングを書いてみましょう。先ほどのコードから修正して、変数「usdjpy」の値が110以上の場合「sell」、110以下100以上の場合は「buy」、それ以外は「notrade」と表示させるコードを記述します。
#if文のネスティング
from random import randint
usdjpy = randint(80, 120)
if 100 <= usdjpy:
if 110 >= usdjpy:
print(usdjpy, "buy")
else:
print(usdjpy, "sell")
else:
print(usdjpy, "notrade")
#実行すると80~120の間でランダムに生成された値とif文の結果が表示されます。
理論演算を使ったif文
if文には理論演算も使うことができます。例えば、「and」を使うとif文のネスティングを使わなくても同じ意味のコードを書くことができます。
先ほどのコードをif文のネスティングを使わずに同じ意味のコードを書いてみましょう。
#andを使ったif文
from random import randint
usdjpy = randint(80, 120)
if (100 <= usdjpy) and (110 >= usdjpy):
print(usdjpy, "buy")
elif 100< usdjpy:
print(usdjpy, "sell")
else:
print(usdjpy, "notrade")
#実行すると80~120の間でランダムに生成された値とif文の結果が表示されます。
また、andの部分は下のように簡略化して書くこともできます。
#andを簡略化したif文
from random import randint
usdjpy = randint(80, 120)
if 100 <= usdjpy <=110:
print(usdjpy, "buy")
elif 110 <= usdjpy:
print(usdjpy, "sell")
else:
print(usdjpy, "notrade")
#実行すると80~120の間でランダムに生成された値とif文の結果が表示されます。
少しコードがごちゃごちゃしていて見にくいですね。結果を変数にしてスッキリさせてみました。
#andを簡略化したif文
from random import randint
usdjpy = randint(80, 120)
if 100 <= usdjpy <=110:
result = "buy"
elif 110<= usdjpy:
result = "sell"
else:
result = "notrade"
print(usdjpy, result)
#実行すると80~120の間でランダムに生成された値とif文の結果が表示されます。
今回のまとめ
・if文のステートメントは先頭に半角スペース4つのインデントを入れる
・elseを使うと結果がFalseの場合、処理を指定できる
・elifを使うと設定したelifの分だけ選択肢を設定できる
・if文の中にif文を入れることをネスティングと呼ぶ
・if文のネスティングを使わなくてもandで同じ意味のコードを書ける
コメント