プログラミング言語には、条件によって処理を変える「条件分岐」があります。
この記事では、Pythonにおける条件分岐の基礎とその実践例を7つご紹介しています。
初心者の方でも分かりやすいように詳しく解説しています。
また、できるだけ例を出して説明していますので、最後までご覧ください。
IF=条件分岐とは何か
条件分岐とは
条件分岐とは、ある条件によって処理を分岐することです。
例えば、ある値が0以上であれば”YES”と表示し、0未満であれば”No”と表示するプログラムを考えてみましょう。
この場合、条件分岐を使って処理を分岐することができます。
IF文とは
IFはPythonの条件分岐の一つで、ある条件が成立する場合に実行する処理を指定することができます。
このIF文は、次のような構文を持ちます。
if 条件式:
実行する処理
条件式がTrue
の場合、処理が実行されます。
条件分岐IF文の基本的な使い方
IF文の構文
IF文の構文は、先程の説明の通りです。
条件式の評価結果がTrue
であれば、if
文の次の行からインデントされたブロック内の処理が実行されます。
インデントは、通常4つのスペースで行われます。
以下に例を示します。
if x >= 0:
print("YES")
比較演算子の種類
IF文で使用する条件式には、比較演算子を用いることができます。
以下に代表的な比較演算子を示します。
>
: 大なり(より大きい)<
: 小なり(より小さい)>=
: 大なりイコール(以上)<=
: 小なりイコール(以下)==
: 等しい!=
: 等しくない
論理演算子の種類
IF文で複数の条件を組み合わせる場合には、論理演算子を使用することができます。
複数の条件とは、例えば
- 成績が80点以上でかつ出席率が90%以上(
and
条件) - 成績が80点以上または出席率が90%以上(
or
条件)
という状況を条件にする場合です。
また、「否定形」を条件にする例として、
- 成績が80点以下ではない(
not
)
などがあります。
改めて、論理演算子についてまとめます。
and
: 論理積(両方の条件がTrueである場合にTrue)or
: 論理和(いずれかの条件がTrueである場合にTrue)not
: 否定(条件式の評価結果を反転させる)
論理演算子を使うことで、複雑になりがちなif文を簡潔にすることができます。
例えば、以下のように2つの条件を満たした場合に「合格」と表示する場合、
if seiseki >= 80:
if syusseki >=80:
print('合格')
とすることもできますが、分かりにくくなることがあります。
その場合は、2つの条件をand
演算子を使って一つの条件式にします。
if seiseki >= 80 and syusseki >= 80:
print('合格')
条件が長くなると分かりづらい場合もありますが、たくさんの条件がある場合は重宝します。
ところで、not
演算子は必ずしも使う必要がない場合があります。
例えば、以下のようにnot
演算子を使う場合、
if not syusseki == 100:
print('皆勤賞ではない')
同じ条件式は比較演算子「!=
」を使うことで実現できます。
if syusseki != 100:
print('皆勤賞ではない')
「裏の裏は表」みたいに分かりづらくなる場合があるので注意しましょう。
条件分岐IF文の応用的な使い方
elif文の使い方
複数の条件に対して、それぞれ異なる処理を行いたい場合には、elif
文を使用することができます。
以下に構文を示します。
if 条件式1:
実行する処理1
elif 条件式2:
実行する処理2
else:
実行する処理3
条件式1がTrue
である場合は、実行する処理1が実行されます。
条件式1がFalse
であり、かつ条件式2がTrue
である場合は、実行する処理2が実行されます。
どちらの条件式もFalse
である場合は、else
ブロック内の処理3が実行されます。
ifとelseを使った例
age = 25
if age >= 20:
print("成人です")
else:
print("未成年です")
このプログラムは、変数age
の値が20以上であれば「成人です」と出力し、そうでなければ「未成年です」と出力します。
if
文の条件式 age >= 20
が真である場合、if
文の次の行にあるprint
文が実行されます。
そうでない場合、else
ブロックに含まれるprint
文が実行されます。
ifとelifとelseを使った例
if
文にはelif
句を追加することで、複数の条件式を組み合わせた判定を行うこともできます。
例えば、以下のように書くことができます。
age = 25
if age >= 65:
print("高齢者です")
elif age >= 20:
print("成人です")
else:
print("未成年です")
このプログラムは、変数age
の値が65以上であれば「高齢者です」と出力し、20以上65未満であれば「成人です」と出力し、20未満であれば「未成年です」と出力します。
if
文の条件式age >= 65
が真である場合、if
ブロックに含まれるprint
文が実行されます。
そうでなくてelif
句の条件式age >= 20
が真である場合、elif
ブロックに含まれるprint
文が実行されます。
if
文の条件式age >= 65
とelif
句の条件式age >= 20
がどちらも偽である場合、else
ブロックに含まれるprint
文が実行されます。
IF文の注意点
インデントに注意しよう
IF文を使う場合には、インデントに注意が必要です。
インデントが正しくない場合には、文法エラーが発生してプログラムが正しく実行されないことがあります。
条件式を簡潔に書く
IF文の条件式は簡潔に書くことが重要です。
複雑な条件式を書きすぎると、コードが読みにくくなります。
また、条件式が複雑になると、バグが発生する可能性が高くなります。
IF文の実践的なコード例①
ユーザーが入力した数値が偶数か奇数かを判定するコード
ここでは、IF文を使用して、ユーザーが入力した数値が偶数か奇数かを判定するコード例を示します。
num = int(input("数値を入力してください: "))
if num % 2 == 0:
print("入力された数値は偶数です")
else:
print("入力された数値は奇数です")
このコードでは、まずinput()
関数を使用してユーザーから数値を入力してもらいます。
int()
関数を使用して、入力された値を整数値に変換しています。
次に、IF文を使用して、入力された数値が偶数か奇数かを判定しています。
%
演算子を使用して、数値が2で割り切れるかどうかを判定しています。
偶数の場合は、余りが0になるため、条件式num % 2 == 0
がTrueとなり、print()
関数で「入力された数値は偶数です」というメッセージを表示します。
奇数の場合は、余りが1になるため、条件式がFalseとなり、else
ブロック内のprint()
関数で「入力された数値は奇数です」というメッセージを表示します。
IF文の実践的なコード例②
BMIを計算し、判定するコード
ここでは、IF文を使ってBMIを計算し、判定するコード例を示します。
height = float(input("身長(cm)を入力してください: "))
weight = float(input("体重(kg)を入力してください: "))
# 身長をメートルに変換する
height = height / 100
# BMIを計算する
bmi = weight / (height ** 2)
# BMIの値に応じて、判定を行う
if bmi < 18.5:
print("あなたのBMIは {:.1f} で、低体重です".format(bmi))
elif 18.5 <= bmi < 25:
print("あなたのBMIは {:.1f} で、普通体重です".format(bmi))
elif 25 <= bmi < 30:
print("あなたのBMIは {:.1f} で、肥満(1度)です".format(bmi))
elif 30 <= bmi < 35:
print("あなたのBMIは {:.1f} で、肥満(2度)です".format(bmi))
elif 35 <= bmi < 40:
print("あなたのBMIは {:.1f} で、肥満(3度)です".format(bmi))
else:
print("あなたのBMIは {:.1f} で、肥満(4度)です".format(bmi))
このコードでは、まずinput()
関数を使用してユーザーから身長と体重を入力してもらいます。
float()
関数を使用して、入力された値を浮動小数点数に変換しています。
その後、身長をメートルに変換しています。
次に、BMIを計算しています。
BMIは体重を身長の2乗で割ることで求めることができます。
最後に、IF文を使用して、BMIの値に応じた判定を行っています。
BMIに対する判定は以下の通り。
- 18.5未満の場合は「低体重」
- 18.5以上25未満の場合は「普通体重」
- 25以上30未満の場合は「肥満(1度)」
- 30以上35未満の場合は「肥満(2度)」
- 35以上40未満の場合は「肥満(3度)」
- 40以上の場合は「肥満(4度)」
IF文の実践的なコード例③
ユーザーからの入力に応じて日本の都道府県名を出力するコード
ここでは、IF文を使用して、ユーザーからの入力に応じて日本の都道府県名を出力するコード例を示します。
なお、47都道府県ではコードが長くなるので東北地方と北海道のみにしています。
# ユーザーからの入力を受け取る
code = int(input("都道府県コードを入力してください(1-7): "))
# 都道府県コードに応じて、都道府県名を出力する
if code == 1:
print("北海道")
elif code == 2:
print("青森県")
elif code == 3:
print("岩手県")
elif code == 4:
print("宮城県")
elif code == 5:
print("秋田県")
elif code == 6:
print("山形県")
elif code == 7:
print("福島県")
else:
print("東北・北海道以外の都道府県コードが入力されました。")
このコードでは、まずユーザーから都道府県コードを入力してもらいます。
次に、入力されたコードに応じて、IF文を使用して都道府県名を出力します。コードが1なら「北海道」、2なら「青森県」、3なら「岩手県」というように、それぞれの都道府県名を出力します。
入力されたコードが1から47の範囲にない場合は、「東北・北海道以外の都道府県コードが入力されました。」と出力されます。
このように、IF文を使用することで、複数の条件に応じて異なる処理を実行できます。
この例では、ユーザーの入力に対して都道府県名を出力するというシンプルな例を示しましたが、実際のアプリケーションでは、より複雑な条件分岐が必要になることもあります。
IF文の実践的なコード例④
与えられた整数が素数かどうかを判定するコード
num = int(input("整数を入力してください: "))
if num > 1:
for i in range(2, num):
if (num % i) == 0:
print(num, "は素数ではありません。")
break
else:
print(num, "は素数です。")
else:
print(num, "は素数ではありません。")
このコードでは、まずユーザーから整数を入力してもらいます。
次に、IF文を使用して、入力された整数が1より大きいかどうかを確認します。
もし入力された整数が1より大きい場合、FORループを使用して、2から入力された整数-1までのすべての整数で割り算を行い、割り切れる数があるかどうかを確認します。
もし割り切れる数があれば、入力された整数は素数ではありません。
しかし、割り切れる数がない場合、入力された整数は素数であると判断されます。
このように、IF文とループを使用することで、与えられた条件に基づいて異なる処理を実行できます。
この例では、与えられた整数が素数であるかどうかを判定するという、より複雑な例を示しました。
なお、for文についてはこちらの記事で詳しく解説しています。
IF文の実践的なコード例⑤
与えられた年がうるう年かどうかを判定するコード
year = int(input("西暦を入力してください: "))
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
print(year, "年はうるう年です。")
else:
print(year, "年はうるう年ではありません。")
else:
print(year, "年はうるう年です。")
else:
print(year, "年はうるう年ではありません。")
このコードでは、まずユーザーから西暦を入力してもらいます。
次に、IF文を使用して、入力された年がうるう年であるかどうかを判定します。
うるう年の判定ルールは以下の通りです。
- 4で割り切れる年はうるう年である。
- ただし、100で割り切れる年はうるう年ではない。
- ただし、400で割り切れる年はうるう年である。
上記のルールに従って、入力された年がうるう年である場合は「年はうるう年です。」、そうでない場合は「年はうるう年ではありません。」と表示されます。
少し複雑なif文の組み合わせ例でした。
IF文の実践的なコード例⑥
与えられた成績に対する成績評価を出力するコード
score = 75
if score >= 90:
print("成績はAです。")
elif score >= 80:
print("成績はBです。")
elif score >= 70:
print("成績はCです。")
elif score >= 60:
print("成績はDです。")
else:
print("成績はFです。")
この例では、変数score
の値に応じて、条件分岐を行っています。
最初のif
文では、score
が90以上であれば「成績はAです。」と表示します。
それ以外の場合には、elif
文を用いて、順に80以上、70以上、60以上、いずれにも当てはまらない場合に分けています。
最後に、else
文で、score
が60未満の場合には「成績はFです。」と表示します。
IF文の実践的なコード例⑦
3つの整数を入力し、それらの値の最大値を表示するコード
a = int(input("1つ目の整数を入力してください: "))
b = int(input("2つ目の整数を入力してください: "))
c = int(input("3つ目の整数を入力してください: "))
if a > b and a > c:
print(a, "が最大値です")
elif b > a and b > c:
print(b, "が最大値です")
else:
print(c, "が最大値です")
結果は3パターンに分かれます。
「aが最大値」になる場合と「bが最大値」になる場合の条件に対する処理を記述し、それ以外の場合に実行する処理はelseに記述します。
【参考】ネストした制御構造
Python
のif
文は、他の制御構造や関数と組み合わせて複雑な処理を実現することができます。
上記の実践例でも④と⑤は「ネスト」という構造を使うことで、複数のif
文やfor文を組み合わせた複雑な条件分岐を行いました。
以下は、ネストを使ったif
文を含むスクリプトの例です。
このスクリプトは、ユーザー名とパスワードを入力し、登録されたユーザー名とパスワードと一致するかどうかを認証するプログラムです。
このプログラムでは、if
文をネストして、ユーザー名とパスワードが一致するかどうかを判定しています。
username = input("ユーザー名を入力してください: ")
password = input("パスワードを入力してください: ")
if username == "user1":
if password == "password1":
print("ログインに成功しました。")
else:
print("パスワードが間違っています。")
else:
print("ユーザー名が間違っています。")
このように、ネストを使ったif文を使うことで、複雑な条件分岐をシンプルに表現することができます。
ただし、ネストが深くなりすぎると、可読性が低下してしまうため、できるだけシンプルな形式に保つように心がけましょう。
まとめ
今回はPythonの初心者向けにif文の基礎と実践例7問を解説しました。
IF文は、Pythonで条件分岐を実現するための基本的な機能の一つです。
条件分岐が必要な場合には、IF文を使用することで処理を分岐することができます。
また、条件式を組み合わせることで複雑な条件分岐も実現することができます。
理解を深め、活用の幅を広げましょう!
それでは、ステキなPythonライフを!
Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。