Day 2・条件分岐・ループ(判断と繰り返し)
比較演算子と論理演算子(and/or/not)
条件式そのものの書き方を学び、複数条件を and / or / not で組み合わせる。
条件は「比べた結果」でできている
if の後ろに書く条件は、実は「2つの値を比べて True か False を返す式」です。この比べるための記号を比較演算子と呼びます。数学とほぼ同じですが、いくつか記号が違うので最初に確認します。
- == : 等しい(イコール2つ。1つの = は「代入」なので意味が全く違う)
- != : 等しくない
- > : より大きい / < : より小さい
- >= : 以上 / <= : 以下
間違い: = は代入
if age = 18: # エラー。これは「代入」の記号
print("18歳")正しい: == は比較
if age == 18: # 「等しいか?」を比べる
print("18歳")= と == の取り違えは最頻出
= は「右の値を左に入れる(代入)」、== は「左右が等しいか比べる」です。if の中で = を1つだけ書くと、Pythonは文法エラーで止めてくれます。エラーメッセージに SyntaxError と出たら、まず == の書き忘れを疑ってください。
複数の条件を組み合わせる: and / or / not
「18歳以上、かつ、会員である」のように条件を2つ以上つなげたいときは、論理演算子を使います。and(アンド)は「両方とも成り立つ」、or(オア)は「どちらか一方でも成り立つ」、not(ノット)は「成り立たないことを反転する」という意味です。
age = 20
is_member = True
if age >= 18 and is_member:
print("割引を適用します")
if age < 18 or not is_member:
print("割引の対象外です")なぜ and と or を区別するのか
条件を「かつ」でつなぐか「または」でつなぐかで、対象になる範囲が正反対になることがあります。たとえば『18歳以上 and 会員』は両方満たす人だけ。『18歳以上 or 会員』はどちらか一方でも満たす広い範囲。要件を読み違えるとバグになるので、日本語の仕様を『かつ/または』のどちらなのか必ず確認してから書きます。
Pythonでは 0 <= age <= 120 のように、比較を鎖のようにつなげて「範囲チェック」も書けます。これは age が 0 以上「かつ」120 以下、という意味で、and で書くより読みやすい書き方です。
age = 30
if 0 <= age <= 120:
print("ありえる年齢です")
else:
print("入力ミスの可能性があります")AIにはこう聞く
複雑な条件は自分で書く前に、日本語の仕様をそのままAIに渡して『この条件をPythonの if 文にしてください。and と or のどちらを使ったか理由も添えて』と頼むと、根拠付きの式が返ります。返ってきた式は必ず『かつ/または』が仕様通りか自分で読み直してから採用してください。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
「等しいかどうか」を比べる正しい演算子はどれですか。
age = 16, is_member = True のとき、次の式の結果はどれですか。 age >= 18 and is_member
and と or の違いを、具体例を1つ挙げて説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。