Python:if文の基本とif~else文(2分岐)

Python
スポンサーリンク

Pythonでの分岐処理として、if~else文を取り上げます。
まずは基本的な数値の比較を行うスクリプトを通して分岐の基本をマスターしてください。

プログラミングには、順次分岐繰り返しと3つの基本構造があります。学ぶ順序も実はこの順番です。繰り返し処理を学ぶ前に分岐をマスターして次のステップに進むとしましょう。

スポンサーリンク

if文の書き方

if 条件式:
[ T A B ] 《条件式が成り立つときの処理》

簡単なサンプルで示します。
キーボードから100を入力すると「合格です」と表示されます。
それ以外の数値では、何も表示されません。

実行イメージ

数値? 100 [Enter]
合格です

ファイル名:15_if1.py

# if文による数値の比較
print("数値? ", end="")
n = int(input())

if n == 100:  # 100と一致
    print("合格です")

解説

5行目が条件分岐のif文です。

n == 100 の部分が条件式です。この場合は、「変数nが100と一致したら」という意味になります。条件式の後に :(半角コロン)をつけて条件式を終了させます。
次の行には、条件式が成り立つときの処理を記述するのですが、必ず字下げを行うようにしてください。半角スペース1文字でも字下げは可能ですが、プログラムを見やすくする観点からTABキーによる字下げが推奨されています。

基本的な書き方は以上ですが、if文だけでは、あくまで条件が成り立った時しか処理を実行できません条件が成り立たなかった場合はどうするかも含めて2択で記述できるのが、以降に示すif~else文です。

if~else文のイメージ

上記の図であれば、if文を使ってこのように表すことができます。

if 《条件》:
    《処理A》
else:
    《処理B》

以下if ~ else文の例を比較演算子の種類も交えて解説します。

if~else文の基本

if~else文記述方法

if 条件式:
[ T A B ] 《条件式が成り立つ場合の処理》
else:
[ T A B ] 《条件式が成り立たない場合の処理》

条件式が成り立った時、成り立たなかった時の処理は必ず字下げをして記述します。

一致、不一致

実行イメージ(100を入力した場合)

数値? 100 [Enter]
合格です

実行イメージ(100以外を入力した場合)

数値? 80 [Enter]
不合格です

ファイル名:16_if2.py

# if~else文による数値の比較
print("数値? ", end="")
n = int(input())

if n == 100:
    print("合格です")
else:  # 100ではない場合
    print("不合格です")

解説

上記サンプルでは、nが100と一致したとき、「合格です」と表示し、nが100と一致しないとき(すなわちnが100以外のとき)「不合格です」と表示しています。

ちなみに変数aが100と一致する場合の条件式は、

a == 100

となります。
変数aが100と一致しない場合の条件式は、

a != 100

となります。
注意点として、==!= ともに文字の間にスペースを入れずに続けて入力するようにして下さい。

elseの意味は条件式によって変わる

if~else文では、if文にのみ条件を記述するため、else文の意味は、「if文の条件以外」「if文の条件が成り立たない場合」となります。プログラマは、「else側の意味が、if文に記述した条件によって変わる」ことをしっかり理解している必要があります。

例えば、以下の2つのスクリプトは同じ意味です。

if n == 100:
    print("合格です")
else:
    print("不合格です")
if n != 100:
    print("不合格です")
else:
    print("合格です")

数値の比較(以上、以下)

実行イメージ(20歳以上のときのメッセージ)

何歳? 20 [Enter]
選挙権があるよ

実行イメージ(20歳未満のときのメッセージ)

何歳? 18 [Enter]
選挙に行けないね

ファイル名:17_if3.py

# if文:数値の比較演算子
print("何歳? ", end="")
age = int(input())

if age >= 20:  # 20歳以上
    print("選挙権があるよ")
else:
    print("選挙に行けないね")

解説

入力した年齢が20歳以上のときとそれ以外(20歳未満)のときとでメッセージを変えるスクリプトです。

条件式 age >= 20 の意味は、「変数ageが20以上だったら」となります。したがってelse文の処理は、20以上ではない場合となって、20未満の場合と言い換えることも出来ます。
>=は、間にスペースなどはさまず、続けて入力するようにしてください。

ちなみに20以下とする場合の条件式は、

age <= 20

とします。

数値の比較(~を越える、~未満)

実行イメージ(血圧140を越える場合)

血圧は? 141 [Enter]
気を付けよう

実行イメージ(血圧140以下の場合)

血圧は? 100 [Enter]
大丈夫です

ファイル名:18_if4.py

# if文:数値の比較演算子
print("血圧は? ", end="")
ketuatu = int(input())

if ketuatu > 140:  # 140を越える
    print("気を付けよう")
else:
    print("大丈夫です")

解説

血圧が140を越える(140を含まず140より大きい)場合とそれ以外(140以下)の場合でメッセージを変えるスクリプトです。

数値比較で「~を越える」あるいは「~より大きい」とする場合は、以上>= から= を取り除いた > を使います。

5行目の条件式 ketuatu > 140の意味は、「変数ketuatuが140を越える場合」あるいは「変数ketuatuが140より大きい場合」となります。条件式に=がついていない為、140は含みませんelse文側の意味は、140を越える場合ではない場合(ややこしい!)となって、140以下の場合を表すことになります。

ちなみに 140未満の場合 (140より小さい場合)とする場合は、

ketuatu < 140

とします。

まとめ:比較演算子(数値)一覧表

Pythonで数値比較に用いる演算子は全部で6つあります。
以下にまとめておきます。(C言語を勉強した方は覚える必要はないですよね)

以上、Pythonでの分岐処理として、if~else文を取り上げました。ある意味プログラムは分岐処理のあつまりといっても過言ではありません。ぜひマスターして面白いプログラムを作ってみてください。

課題

個数を入力させるスクリプト。
入力した個数によってメッセージ文を変える。
ファイル名: minus.py

実行イメージ(通常)

個数を入力してください: 10 [Enter]
10 個ですね。

実行イメージ(マイナスの数が入力された時)

個数を入力してください: -1 [Enter]
正数を入力してください

体温を入力させるスクリプト。
入力した体温により次のようにメッセージ文を変える。
ファイル名:kenon.py

37.5℃以上帰宅してください
上記以外どうぞこちらへ

実行イメージ

体温を入力してください: 36.6 [Enter]
どうぞこちらへ

入力した数が偶数奇数かを判定するスクリプト。
備考:偶数とは2で割り切れる数である
ファイル名: gusu.py

実行イメージ(偶数の場合)

数? 4 [Enter]
4 は、偶数です

実行イメージ(奇数の場合)

数? 7 [Enter]
7 は、奇数です

コメント