プログラムの処理を条件により分岐させることができます。この分岐は、「もし、今日が平日ならば仕事に行く」というように、日常でも「もし、~であれば、~する」という場面が多くあります。それをプログラムで表現するために使用できる命令文として、if文があります。
ここでは、次の点を説明します。
if文の書式1 |
---|
if 条件式: 処理 |
「if」の後に条件を指定します。次の行にTrueの場合の処理を記述します。Pythonはインデントを使ってブロックを定義します。そのため、処理は字下げ(インデント)してから書き始めます。処理が複数ある場合も、字下げして複数行の処理を記述します。
例:
if str == "平日":
print("今日は仕事があります。")
○ プロジェクト
次のようにファイルを作成してください。
プロジェクトの種類 | Pythonアプリケーション |
---|---|
プロジェクト名 | Chapter3 |
○ ファイル
Chapter3プロジェクトに次のファイルを追加してください。
ファイルの種類 | 空のPythonファイル |
---|---|
ファイル名 | iftest1.py |
○ プログラム
次のようにプログラムを入力してください。
○ フローチャート
○ 実行結果
(変数strに「平日」を入力した場合)
平日か休日を入力してください:平日
今日は仕事があります。
(変数strに「休日」を入力した場合)
平日か休日を入力してください:休日
○ 解説
2行目では、キーボード入力を指定しています。「input」関数はキーボードからの入力を促します。「()」内に指定した文字列が、入力を促すメッセージとして表示されます。今回はキーボードから入力された内容が変数strに格納されます。5行目では変数$strに「平日」を格納しています。 実行確認するときにこの変数に値を入れなおしてください。
5行目では、変数に格納したデータを比較しています。条件として変数strに格納されているデータが「平日」と等しければ、6行目の命令文で画面に表示されます。条件が満たされない場合は何も処理しません。
次に、「もし、今日が平日ならば仕事に行く、その他の場合は、遊びに行く」というような、「もし、~であれば、~をし、その他の場合は、~する」という条件を見てみましょう。
if文の書式2 |
---|
if 条件式: 処理1 else: 処理2 |
「if」の条件がFalseだった場合に処理する場合は「else:」を指定します。次の行にFalseの場合の処理を記述します。
例:
if str == "平日":
print("今日は仕事があります。")
else:
print("今日は遊びに行きましょう。")
○ ファイル
Chapter3プロジェクトに次のファイルを追加してください。
ファイルの種類 | 空のPythonファイル |
---|---|
ファイル名 | iftest2.py |
○ プログラム
次のようにプログラムを入力してください。
○ フローチャート
○ 実行結果
(変数strに「平日」を入力した場合)
平日か休日を入力してください:平日
今日は仕事があります。
(変数strに「休日」を入力した場合)
平日か休日を入力してください:休日
今日は遊びに行きましょう。
○ 解説
5行目では、入力したデータを比較しています。条件として変数strに格納されているデータが「平日」と等しければ、6行目の命令文で画面に表示されます。7行目でelse文が記述されているので、条件が満たされない場合は8行目の命令文でメッセージが表示されます。
変数に格納されている内容によって「今日は仕事があります。」か「今日は遊びに行きましょう。」が表示されます。今回のサンプルでは「平日」と格納すれば「今日は仕事があります。」と表示され、それ以外を格納すると「今日は遊びに行きましょう。」と表示されます。
次に、「もし、今日が平日ならば仕事に行く、その他もし、休日ならば遊びに行く、その他の場合は、なにもしない」というような、「もし、~であれば、~をし、その他もし~であれば、~をし、その他の場合は、~する」という条件を見てみましょう。
if文の書式3 |
---|
if 条件式1: 処理1 elif 条件式2: 処理2 else: 処理3 |
まず、「if」の条件が判断されます。Flaseだった場合は、次の「elif」の条件が判断されます。条件がTrueだった場合は次の行が処理されます。もし条件がFalseだった場合は次の「else」の次の行の処理が実行されます。
例:
if str == "平日":
print("今日は仕事があります。")
elif str == "休日":
print("今日は遊びに行きましょう。")
else:
print("今日は家でおとなしくしていましょう。")
○ ファイル
Chapter3プロジェクトに次のファイルを追加してください。
ファイルの種類 | 空のPythonファイル |
---|---|
ファイル名 | iftest3.py |
○ プログラム
次のようにプログラムを入力してください。
○ フローチャート
○ 実行結果
(変数strに「平日」を入力した場合)
平日か休日を入力してください:平日
今日は仕事があります。
(変数strに「休日」を入力した場合)
平日か休日を入力してください:休日
今日は遊びに行きましょう。
(変数strに「その他」を入力した場合)
平日か休日を入力してください:その他
今日は家でおとなしくしていましょう。
○ 解説
5行目では、変数に格納したデータを比較しています。条件として変数strに格納されているデータが「平日」と等しければ、6行目の命令文で画面に表示されます。7行目で「elif」文が記述されているので、さらに変数に格納されたデータを比較しています。条件として変数strに格納されているデータが「休日」と等しければ、8行目の命令文で画面に表示されます。9行目で「else」文が記述されているので、条件が満たされない場合は10行目の命令文でメッセージが表示されます。
「elif」文は複数指定することができます。また、「else」文は省略することもできます。
次に条件文に複数の条件を指定する方法を見てみましょう。複数の条件を組み合わせて一つの条件として扱います。その方法として「論理積」と「論理和」があります。そして「論理否定」も確認してみましょう。
論理積は複数の条件のいずれも満たされる場合に真と判断されます。
論理積の書式 |
---|
条件式1 and 条件式2 |
例:
if age >= 6 and age <= 12:
○ ファイル
Chapter3プロジェクトに次のファイルを追加してください。
ファイルの種類 | 空のPythonファイル |
---|---|
ファイル名 | iftest4.py |
○ プログラム
次のようにプログラムを入力してください。
○ フローチャート
○ 実行結果
(変数str_ageに「10」を入力した場合)
年齢を入力してください:10
小学生です。
(変数str_ageに「15」を入力した場合)
年齢を入力してください:15
小学生ではありません。
○ 解説
2行目では、年齢を入力しています。入力したデータは文字列なので、5行目で「int」関数を使って数値に変換しています。8行目では、入力した年齢が6歳以上かつ12歳以下かどうかを判断しています。その範囲内にあれば条件が「True」と判断されて9行目が実行されます。範囲外であれば11行目が実行されます。
論理和は複数の条件のいずれかが満たされる場合に真と判断されます。
論理和の書式 |
---|
条件式1 or 条件式2 |
例:
if vehicle == "車" or vehicle == "オートバイ":
○ ファイル
Chapter3プロジェクトに次のファイルを追加してください。
ファイルの種類 | 空のPythonファイル |
---|---|
ファイル名 | iftest5.py |
○ プログラム
次のようにプログラムを入力してください。
○ フローチャート
○ 実行結果
(変数vehicleに「車」か「オートバイ」を入力した場合)
利用される乗り物を入力してください:車
公共交通機関をご利用ください。
(変数vehicleに「電車」を入力した場合)
利用される乗り物を入力してください:電車
気を付けてお越しください。
○ 解説
5行目では、変数に格納した乗り物が「車」か「オートバイ」であれば、6行目が実行されてメッセージが表示されます。それ以外の場合は8行目が処理されます。
論理否定は真の時には偽と、偽の時には真と判断されます。
論理否定の書式 |
---|
not 条件式 |
例:
if not weather == "雨":
○ ファイル
Chapter3プロジェクトに次のファイルを追加してください。
ファイルの種類 | 空のPythonファイル |
---|---|
ファイル名 | iftest6.py |
○ プログラム
次のようにプログラムを入力してください。
○ フローチャート
○ 実行結果
(変数weatherに「晴れ」や「曇り」を入力した場合)
天気を入力してください:晴れ
傘は必要ありません。
(変数weatherに「雨」を入力した場合)
天気を入力してください:雨
傘が必要です。
○ 解説
5行目では、入力した天気が「雨」でなければ、6行目が実行されてメッセージが表示されます。「雨」の場合は8行目が実行されてメッセージが表示されます。