MENU

1-06 条件分岐の基本

ファイル名: note06.ipynb

ユーザーが入力した値を条件によって取り扱いを変える処理を行います。これを条件分岐と呼びます。

プログラミングでは、様々な条件によって取り扱いを変える場合が多く、この条件分岐によって複雑な対応ができるのです。

IF文の構造

1. 基本的なif文

age = int(input("Please enter your age: "))

if age >= 18:
    print("You can vote.")
else:
    print("You cannot vote.")

Pythonでは条件文をifelseで処理します。ルールは以下のようになっています。

  1. ifの後に条件式を書く
  2. 次の行に条件を満たす場合の処理
  3. elseの後に、条件を満たさない場合の処理(elseは省略可能)
  4. ifとelseの行には、コロン「:」をつける(ここまでという区切り目)
  5. if文の中で行われる処理は必ずインデント(字下げ)

<注意> Python では、ifelse の中で実行される処理を インデント(字下げ)で表します。
これは、他の言語で { } を使う代わりに、インデントでブロック(処理のまとまり)を示す仕組みになっているためです。

  • インデントは 半角スペース4つ が一般的(推奨)
  • ブロックの中の行は 同じ幅でインデント する
  • ブロックが終わると インデントを戻す(左端に戻る)

これを守らないと IndentationError(インデントエラー)になります。

2. 比較演算子

条件を作るために使う記号を比較演算子と呼びます。

条件は、「A 比較演算子 B」という形になっています。

演算子意味結果
==等しい5 == 5True
!=等しくない5 != 3True
>より大きい7 > 3True
<より小さい2 < 8True
>=以上5 >= 5True
<=以下3 <= 7True

>=<=左が不等号で右が等号。順番を間違えないように

3. 比較演算子の利用例

以下のように複数の条件分岐がある場合、elseifを合体させたelifを使うことができる。

score = int(input("Please enter your test score: "))

if score == 100:
    print("Perfect score! Excellent!")
elif score >= 80:
    print("Great job!")
elif score >= 60:
    print("You passed")
else:
    print("Please try harder")

条件式(if, elif, elseで始まる文は終わりはコロン「:」)
処理行はインデントされているのを確認しておこう。

論理演算子

複数の条件を組み合わせることができます。

演算子意味
andかつ(両方とも真)age >= 18 and age < 65
orまたは(どちらか真)day == "土曜日" or day == "日曜日"
not否定(真偽を逆転)not (score < 60)

条件は3つ一度に組み合わせることもできる。
A and B and C とすると、3つの条件A,B,Cの全てを満たす必要があり、
A or B or C とすると、3つの条件A,B,Cのいずれかを満たせば良い。

age = int(input("年齢を入れてください"))
if age >= 13 and age <=18:
    print("中高生です")
else:
    print("中高生ではありません")

エラー対応

ユーザーに整数値を入れるよう促しているのに、文字を入れてしまった場合、Pythonでは、ValueError が表示されます。入力時のエラーの代表的なものは次のものです。

エラー名原因
ValueError整数・小数・文字の間違い
ZeroDivisionError0で割った
TypeError型が合わない("3" + 5 など)

try文

プログラム実行中に上記のようなエラーが起きたときに、プログラムを止めずに対処する方法としてtry文があります。

たとえば、入力された整数の逆数を求めるプログラムの場合、整数でなければValueError 0の場合は割り算ができないのでZeroDivisionErrorが発生します。Try文は、Pythonのこのエラー発出に紐づけて、処理をする機能にです。

try:
    x = int(input("整数を入力してください"))
    result = 10 / x
    print(result)
except ValueError:
    print("数字を入力してください")
except ZeroDivisionError:
    print("0では割れません")

条件文のif やelseと同じように、コロン「:」やインデント(字下げ)が必要です。

コメント

コメントする