結論: 条件分岐(if文)は、条件によって、実行する処理を切り替える仕組みです。Pythonでは、if・elif・elseで書きます。条件は上から順に確認され、最初に成り立ったものだけが実行されます。つまずきやすいのは、=と==の違い、elifの順序、インデント、input()が文字列である点です。
条件分岐とは
「雨なら傘を持つ。そうでなければ、持たない」のように、状況によって、動きを変えるのが、条件分岐です。プログラムでは、**条件が成り立つか(True)、成り立たないか(False)**で、実行する処理を選びます。
基本の形:if と else
score = 75
if score >= 60:
print("合格")
else:
print("不合格")
結果は、「合格」と表示されます。
if 条件::条件が成り立つ時の処理else::成り立たない時の処理- 処理の行は、**字下げ(インデント)**する
- 行末の
:(コロン)を忘れない
3つ以上に分ける:elif
score = 75
if score >= 80:
print("A")
elif score >= 60:
print("B")
else:
print("C")
結果は、「B」と表示されます。
score >= 80を確認する → 75点なので、成り立たないscore >= 60を確認する → 成り立つ → 「B」を表示して、終わるelseは、実行されない
上から順に確認し、最初に成り立ったものだけが実行されます。
条件に使う記号
比較演算子
| 記号 | 意味 | 例 |
|---|---|---|
== |
等しい | score == 80 |
!= |
等しくない | score != 0 |
> |
より大きい | score > 60 |
>= |
以上 | score >= 60 |
< |
より小さい | score < 60 |
<= |
以下 | score <= 60 |
条件を組み合わせる
| 記号 | 意味 | 例 |
|---|---|---|
and |
かつ(両方が成り立つ) | age >= 18 and has_id |
or |
または(どちらかが成り立つ) | day == "土" or day == "日" |
not |
でない(反対にする) | not is_member |
age = 20
if age >= 18 and age < 65:
print("対象です")
変数の基本は、変数とはをご覧ください。
よくあるつまずき
① = と == の違い
=は、代入(値を入れる)==は、比較(等しいかを調べる)
score = 80 # 代入
if score == 80: # 比較
print("ちょうど80点")
② elifの順序
広い条件を先に書くと、後ろの条件に届きません。
score = 85
if score >= 60: # 85点もここで成り立つ
print("B")
elif score >= 80: # ここには来ない
print("A")
85点でも「B」になります。厳しい条件(80点以上)から、順に書きます。
③ インデント(字下げ)
字下げした行が、ifの中の処理になります。
if score >= 60:
print("合格") # ifの中(条件が成り立つ時だけ)
print("終了") # ifの外(いつも実行される)
字下げの幅は、半角スペース4つで揃えるのが一般的です。
④ input() は文字列
input() で受け取った値は、数字に見えても文字列です。
score = int(input("点数を入力:"))
int() で、数値に変換してから、比べます。変換しないと、意図しない結果になることがあります。
JavaScriptでは
考え方は、同じです。書き方だけが違います。
const score = 75;
if (score >= 80) {
console.log("A");
} else if (score >= 60) {
console.log("B");
} else {
console.log("C");
}
- 条件は、
( )の中に書く - 処理は、
{ }の中に書く - 「else if」と、2語で書く
- 等しいかは、
===(厳密に比較する書き方)を使うことが多い
Excelの IF関数との関係
ExcelのIF関数も、同じ考え方です。「条件が成り立てば、A。そうでなければ、B」と切り替えます。IF関数の使い方も、あわせてご覧ください。
思い通りに動かない時の確認
| 症状 | 原因 | 対処 |
|---|---|---|
| エラーになる | コロンの付け忘れ、字下げのずれ | : と、インデントを確認する |
| 条件が成り立たない | = と == の取り違え |
比較は == にする |
| 意図しない分岐になる | elifの順序 | 厳しい条件から書く |
| 数の比較が、おかしい | 文字列のまま比べている | int() で変換する |
| どこを通っているか不明 | 値が分からない | print で、値を表示する(デバッグとは) |
まとめ
- 条件分岐は、条件によって、処理を切り替える仕組み。Pythonは if・elif・else
- 条件は上から順に確認され、最初に成り立ったものだけが実行される
- つまずきは、=と==、elifの順序、インデント、input()が文字列
- 条件の組み合わせは、and・or・not
関連記事:ループ(繰り返し)とは、変数とは、Pythonとは、関数とは、例外処理とは