プログラムは、複数並んだ文の上から順に実行される「順次進行」と、何らかの条件でプログラムの流れが枝分かれする「条件分岐」と、プログラムの特定の範囲を何度か繰り返す「繰り返し」の3種類の制御構造から成り立っています。
この章では、条件分岐について学んでいきましょう
条件分岐
条件分岐は、if
という命令文を使用して実現します
1.条件が成立したときに処理を実行する
if 条件式:
処理内容
条件式の後にはコロン(:)を記述し、処理内容はこのコロン(:)がついた文の次の行にインデント(字下げ)して記述します
インデントはスペース2個分またはTABキーを使います
処理内容が複数になる場合は、そろえてインデントします
条件式がTrueの場合、処理内容を実行します
以下は、if文を使用したサンプルプログラムです
input()関数は、外部入力により値を取得するときに使用します
“整数を入力してください:”と表示した状態で、値が入力されるのを待ちます
値を入力しENTERキーを押下すると入力された値を取得し、次の処理を実行します
input()関数は、文字列を返すため、整数を取得するには、int()で型変換する必要があります
if文の後にかかれた num1 < 10
が条件式です
条件式に記述することができる演算子は、次のものがあります
- 比較演算子(<、>、<=、>=、==、!=)
- 複数の比較演算を組み合わせて複雑な条件を作成する論理(ブール)演算子(and、or、not)
いくつか、サンプルプログラムを示します
age = int(input("年齢を整数で入力してください。:"))
if age >= 18:
print("成人です。")
実行結果
年齢を整数で入力してください。:20
成人です。
18以上の値を入力した場合、条件式はTrueとなり、if文に続く処理内容の部分が実行され「成人です。」と表示されます
実行結果
年齢を整数で入力してください。:14
一方、18未満の値を入力すると条件式はFalseとなるため、if文に続く処理内容の部分は実行されません
以下は、andを使用したサンプルプログラムです
age = int(input("年齢を整数で入力してください。:"))
if age >= 18 and age < 65:
print("成人です。")
実行結果
年齢を整数で入力してください。:55
成人です。
入力した値が、18以上65未満のとき条件式はTrueとなり「成人です」と表示します
また、andの場合、条件式は次のように記述することもできます
if 18 <= age < 65:
print("成人です。")
以下は、orを使用したサンプルプログラムです
num = int(input("0から24までの整数を入力してください:"))
if num<9 or num > 18:
print("営業時間外です")
実行結果
0から24までの整数を入力してください:8
営業時間外です
入力した値が9より小さい、または、18より大きい場合、条件式はTrueとなり、「営業時間外です」と表示します
【演習問題】
では、次の演習を実施してみましょう
- 標準入力から整数値を読み込み、入力した値が10以上なら「10以上です」と表示するプログラムを作成する
- 標準入力から整数値を読み込み、入力した値が1でなければ「1ではありません」と表示するプログラムを作成する
- 標準入力から整数値を読み込み、入力した値が20以上80未満のとき「20以上80未満です」と表示するプログラムを作成する
- 標準入力から整数値を読み込み、入力した値が20以下または90以上のとき「20以下または90以上です」と表示するプログラムを作成する
2.条件に合わせて処理を変える
if 条件式1:
処理内容1
elif 条件式2:
処理内容2
elif 条件式3:
処理内容3
else:
処理内容4
もし条件式1がTrueならば処理内容1を実行、そうではなく条件式2がTrueなら処理内容2を実行、そうではなく条件式3がTrueなら処理内容3を実行、そうでないなら処理内容4を実行するというように条件に合わせて処理を変える場合に使用しますelif
の部分はいくつあってもかまいませんし、elif
やelse
の部分はなくてもかまいません
以下に、サンプルプログラムを示します
age = int(input("年齢を整数で入力してください。:"))
if age >= 18:
print("成人です。")
else:
print("未成年です。")
実行結果
年齢を整数で入力してください。:15
未成年です。
このサンプルでは、15を入力した場合、条件式:age >= 18はTrueにはならないので、elseの処理が実行されます
tensu = int(input("テストの点数を入力してください:"))
if tensu >= 90:
print("Aです。")
elif tensu >= 80:
print("Bです。")
elif tensu >= 70:
print("Cです。")
else:
print("Dです。")
実行結果
テストの点数を入力してください:82
Bです。
if文の条件式の上から順に評価されます。
入力された値が90以上のとき「Aです」と表示します。90未満80以上の場合「Bです」、80未満70以上のとき「Cです」、70未満のとき「Dです」と表示するサンプルプログラムです
【演習問題】
では、次の演習を実施してみましょう
- 1から10までの整数を乱数で発生させ、5以上なら「5以上です」、そうでなければ「5未満です」と表示するプログラムを作成する
- 1から10までの整数を乱数で発生させ、取得した値が1ではないとき「1ではありません」、そうでなければ「1です」と表示するプログラムを作成する
- 1から100までの整数を乱数で発生させ、取得した値が20以上80未満のとき「20以上80未満です」、そうでなければ「範囲外です」と表示するプログラムを作成する
- 1から100までの整数を乱数で発生させ、取得した値が20以下または90以上のとき「20以下または90以上です」、そうでなければ「20より大きく90未満です」と表示するプログラムを作成する
- 1から4までの乱数で整数を発生させ、1なら「春です」、2なら「夏です」、3なら「秋です」、4なら「冬です」と表示するプログラムをif-elif-else文を使用して作成する
- 標準入力より2つの整数を取得し変数a,bに代入する。aの方が大きければ「aの方が大きいです」、bの方が大きければ「bの方が大きいです」、そうでなければ「等しいです」と表示するプログラムを作成する
【補足】
1から10までの整数を乱数で発生させる方法は次の通りです
import random
num = random.randint(1,10)
print(num)
乱数を扱うための標準モジュールを使用します
Pythonでは、このようにimport モジュール名と記載することで、モジュールを使用することができるようになります。モジュールとは、プログラミングでよく使う処理を再利用しやすいようにまとめたもので、randomもその中の⼀つで乱数を扱う道具がぎっしりと詰まっています
random.randint(1,10)はrandomモジュールの中のrandint()という関数を使⽤して乱数を取得し、結果を変数numに代⼊しています
randint(1,10)は⽣成したい数値の範囲を指定しています。1から6までの場合はrandom.randint(1,6)と記述します
コメント