2日目のゴールとテーマ
2日目のテーマは「条件によって“分かれ道”を作る」です。
昨日までは、上から順番に“全部”実行されるだけでした。
今日はそこに、
「もし〜なら、こうする」
「そうでなければ、こっちをする」
という“判断”を入れていきます。
これが書けるようになると、一気に「アプリっぽさ」が増します。
if文という「分かれ道」を知る
「条件が本当なら、このブロックを実行する」
Pythonで分かれ道を作る基本は if 文です。
score = 80
if score >= 70:
print("合格です")
Python実行すると、「合格です」と表示されます。
ここで起きていることを分解します。
score >= 70 という「条件」がある
その条件が「真(True)」なら、下のインデントされた行が実行される
偽(False)なら、そのブロックはスキップされる
重要なのは「インデント(字下げ)」です。
Pythonでは、if の行の末尾に : を書き、その次の行から「半角スペース4つ」などで下げて書きます。
この“下がっている部分”が、「条件が真のときに実行されるかたまり」です。
if と else で「どちらか一方」を選ぶ
条件が真なら if 側、偽なら else 側
「合格か不合格か」をはっきり分けたいときは、else を使います。
score = 60
if score >= 70:
print("合格です")
else:
print("不合格です")
Pythonscore が 60 のとき、score >= 70 は偽なので、else: のブロックが実行され、「不合格です」と表示されます。
ここでのポイントは、「どちらか一方だけが必ず実行される」ということです。if の条件が真なら else はスキップされ、
偽なら if ブロックはスキップされて else が実行されます。
比較演算子をまとめて押さえる
「〜より大きい」「等しい」「違う」を書く記号
条件の中では、「値を比べる」ことがよくあります。
Pythonでは、次のような記号を使います。
a = 5
b = 3
print(a > b) # True
print(a < b) # False
print(a >= 5) # True
print(a <= 4) # False
print(a == 5) # True
print(a != 5) # False
Pythonここでの重要ポイントは、== と = の違いです。
= は「代入」
右側の値を左側の変数に入れる
== は「等しいかどうかの比較」
「a と 5 は同じか?」という質問
初心者が一番やりがちなのが、「条件の中で = を使ってしまう」ミスです。
Pythonではそれは文法エラーになりますが、
頭の中では「比較は ==」と強く結びつけておいてください。
入力された値で条件分岐してみる
「年齢によってメッセージを変える」ミニ例
1日目でやった input と組み合わせてみましょう。
age_text = input("あなたの年齢を入力してください: ")
age = int(age_text)
if age >= 20:
print("成人です")
else:
print("未成年です")
Python流れを丁寧に追います。
input で文字列として年齢を受け取るint(age_text) で整数に変換するage >= 20 が真なら「成人です」、偽なら「未成年です」
ここでも、「入力 → int で数字に変換 → 条件で比較」というパターンが出てきました。
この流れは、今後何度も使います。
elif で「3つ以上のパターン」に分ける
if / elif / else の三段構え
「点数によって、S / A / B / C を出したい」とします。
このときに使うのが elif です。
score_text = input("テストの点数を入力してください: ")
score = int(score_text)
if score >= 90:
print("評価: S")
elif score >= 80:
print("評価: A")
elif score >= 70:
print("評価: B")
else:
print("評価: C")
Python例えば、score が 85 のときの流れを追ってみます。
まず if score >= 90 をチェック → 偽
次に elif score >= 80 をチェック → 真
この時点で「評価: A」を表示し、残りの elif と else はスキップ
ここでの重要ポイントは、「上から順番にチェックされ、最初に真になったところだけが実行される」ということです。
だからこそ、「条件の順番」が大事になります。
もしこれを逆に書いてしまうと、おかしなことになります。
# よくない例
if score >= 70:
print("評価: B以上")
elif score >= 90:
print("評価: S")
Pythonscore が 95 のとき、
最初の score >= 70 が真になってしまい、elif score >= 90 には到達しません。
「広い条件」から書くと、後ろの条件が意味を失うことがあります。
条件を組み合わせる:and / or
「〜以上かつ〜以下」「〜または〜」を表現する
少しだけ踏み込んで、条件の組み合わせも見ておきます。
age_text = input("年齢を入力してください: ")
age = int(age_text)
if age >= 13 and age <= 19:
print("あなたはティーンエイジャーです")
else:
print("ティーンエイジャーではありません")
Pythonここでは and を使って、「13以上 かつ 19以下」という条件を作っています。and は「両方とも真なら真」、or は「どちらか一方でも真なら真」です。
例えば、こういう使い方もできます。
if age < 0 or age > 120:
print("その年齢はちょっとおかしいかもしれません")
Pythonここでのポイントは、「条件を読み上げてみて、自然な日本語になるか」を意識することです。age >= 13 and age <= 19
→ 「年齢が13以上 かつ 19以下」
と声に出してみると、意味が頭に入りやすくなります。
2日目のミニアプリ:簡単な「料金判定アプリ」
年齢によって料金を変える
ここまでの要素をつなげて、小さなアプリにしてみます。
仕様はこうです。
年齢を入力してもらう
0〜5歳は「無料」
6〜12歳は「子ども料金 300円」
13〜64歳は「大人料金 500円」
65歳以上は「シニア料金 400円」
それ以外(マイナスなど)は「入力がおかしいです」と出す
コードはこうなります。
print("=== 料金判定アプリ 2日目バージョン ===")
age_text = input("年齢を入力してください: ")
age = int(age_text)
if age < 0:
print("入力された年齢が正しくありません。")
elif age <= 5:
print("料金: 無料です。")
elif age <= 12:
print("料金: 子ども料金 300円です。")
elif age <= 64:
print("料金: 大人料金 500円です。")
else:
print("料金: シニア料金 400円です。")
Python流れを丁寧に追ってみます。
最初に「マイナス年齢」を弾いている
次に「5歳以下」「12歳以下」「64歳以下」と、年齢の上限で区切っている
どれにも当てはまらなかった場合(65歳以上)は、最後の else に行く
ここでの重要ポイントは、「条件を“かぶらないように”設計する」ことです。age <= 5 の次に age <= 12 と書いているので、
6〜12歳だけがそのブロックに入ります。
条件分岐でよくあるつまずきポイント
「条件が思った通りに動かない」ときの考え方
条件分岐で一番多い悩みは、「頭の中のイメージと実際の動きがズレる」ことです。
そのときにやってほしいのは、「具体的な値を当てはめてみる」ことです。
例えば、さっきの料金判定で、
「12歳なのに大人料金になってしまった」とします。
そのときは、紙でもいいのでこう書き出します。
age = 12 のときage < 0 → Falseage <= 5 → Falseage <= 12 → True
「あ、ここで True になっているから、このブロックが実行されるんだな」と分かります。
もし想定と違うなら、「条件の書き方」か「順番」が間違っているはずです。
頭の中だけで考えず、
「この値のとき、この条件は True か False か」を一つずつ評価してみる。
これが、条件分岐を味方にする一番の近道です。
2日目で一番大事な感覚
「プログラムは、“質問に答えながら進んでいる”」
今日あなたに持ってほしい感覚はこれです。
プログラムは、ただ上から実行されているだけではなく、
途中途中で「質問」をしている。
「score は 70以上か?」
「age は 0未満か?」
「この文字列は空か?」
その質問に対して、True / False で答えさせて、
True ならこっち、False ならあっち、という分かれ道を作っている。
if / elif / else は、その「質問と分かれ道」を書くための道具です。
ここが分かると、アプリの“性格”を自分で決められるようになります。
2日目のまとめ
今日のキーポイントを短く整理すると、こうなります。
if 条件: で「条件が真のときだけ実行されるブロック」を書ける。if ... else で「どちらか一方だけ」を選べる。if ... elif ... else で「3つ以上のパターン」に分岐できる。
比較演算子(==, !=, >, <, >=, <=)で値を比べる。and / or で条件を組み合わせられる。
もし余裕があれば、今日の料金判定アプリを少しアレンジしてみてください。
例えば、
「学生ですか?(y/n)」も聞いて、学生なら少し割引する
「平日か休日か」で料金を変える
「年齢+時間帯」で、深夜料金を足す
など、条件を増やしてみると、
「分かれ道を設計する感覚」が一気に鍛えられます。
