#python #条件判定 #条件式 #if #else #elif #and#or #in #not #パターン
この記事では、pythonにおける条件判定文(if)の使用パターンと使用例について、わかりやすく解説します。
pythonの記事ではありますが、他のプログラミング言語でもほぼ全く同じ基本内容です。
本記事を読むにあたって
本記事内のプログラムを実践するには、下記の記事に従って環境を準備してください。
・ 【第2回】pythonのプログラミング環境を作る
『もし・・・の場合』・・・を行う
『もし・・・の場合』・・・を行う という『』部分の条件を判定する場合は、”if ・・・ : “を使います。
“・・・”には、『~が~と同じ』とか、『~が~以上』のような条件を表す式(条件式)が入ります。
図で表現すると以下になります。
以降の小見出しでは、この条件式の種類ごとに説明と例を記載します。
『~が~と同じ』
『~が~と同じ』かを確認する条件判定を説明します。
以下のように 『if ~ == ~ : 』と記載します。
inp = input(">") # キーボードから文字列を入力
if inp == "バイバイ" :
print("ばいちゃ!")
“input”はキーボードから文字列を入力します。
“inp = input(“>”)は、 プロンプト として”>”を表示し、キーボードから文字列の入力を受付け、変数inpに入力した文字列を格納しています。
条件判定(if)で、入力された文字列が”バイバイ”であった場合は、print関数で”ばいちゃ!”を画面に表示します。
『~が~と異なる』
『~が~と異なる』という条件判定は、以下のように 『if ~ != ~ : 』となります。
inp = input(">") # キーボードから文字列を入力
if inp != "おはよう" :
print("こんにちは!")
また、以下のように 『if not ~ == ~ : 』と記載することもできます。
inp = input(">") # キーボードから文字列を入力
if not inp == "おはよう" :
print("こんにちは!")
『~が~以上・以下・未満・超えている』
『~以上』『~以下』『~未満』『~を超えた』という判定を行なう場合、以下の例のように数学で使う記号とほぼ同じ “<“, “>”, “<=”, “>=” を使って条件判定を行なうことができます。
inp = input(">") # キーボードから文字列を入力
if int(inp) < 0 :
print("負の数です")
if int(inp) > 99 :
print("99を超えました")
if int(inp) <= 10 :
print("10以下です")
if int(inp) >= 90 :
print("90以上です")
なお、”int()”は入力に指定された文字列を整数に変換する関数です。
また、上記は数字の例でしたが、文字列であっても、ABC順、あいうえお順の並びがあるので、大小の比較ができます。
inp = input(">") # キーボードから文字列を入力
if inp < "B" :
print("B判定より上です")
if inp >= "C" :
print("C判定以下です"
)
上記に示した半角の英数字以外の記号については、 ASCIIコード の表に従って順序が決定されます。
全角の文字(漢字、全角の英数字・記号、絵文字)については、ASCIIコード以外の 文字コード の表に従って順序が決定されます。
条件式の組み合わせ
前出の条件はシンプルな条件ばかりでしたが、実際には複数の条件を組み合わせたものになることが多くあります。
そのため、pythonを含むプログラミング言語では、『~、かつ、~の場合』、『~、または、~の場合』、さらにこれらを組み合わした複雑な条件など、複数の条件で判定ができるようになっています。
以下に例を示します。
inp = input(">") # キーボードから文字列を入力
inp = int(inp) # 数値型に変換
if 0 <= inp and inp <= 99 : # and による『~、かつ、~の場合』
print("範囲内です")
if inp < 0 or inp > 99 : # or による『~、または、~の場合』
print("範囲外です")
英文を書くのと同じように、
『~、かつ、~の場合』という条件判定は、”if ~ and ~ : “
『~、または、~の場合』という条件判定は、”if ~ or ~ : “
と記載します。
and, orを複雑に組み合わせることもできます。
この場合は、多くの場合、丸括弧 “( )” でくくって、どこからどこまでが and, orの範囲なのかを明確にする必要があります。
以下がその例です。
inp = input(">") # キーボードから文字列を入力
inp = int(inp) # 数値型に変換
if (-180 < inp and inp < 0) or (180 < inp and inp < 270) : # andとorが複合した例
print("危険な角度です")
『~~~~~ではない』
時には、複雑に組み合わさった条件判定と全く反対(否定)の条件で判定したい場合があります。
例えば、『(~が~の場合 または ~が~の場合) ではない場合』というケースです。
以下に例を示します。
inp = input(">") # キーボードから文字列を入力
inp = int(inp) # 数値型に変換
if not ( (-180 < inp and inp < 0) or (180 < inp and inp < 270) ) : # andとorが複合した例
print("安全な角度です")
上記のように not を条件の前に付けて、後ろに続く条件判定を反対にした(否定した)条件判定ができます。
『~を含む』、『~を含んでいない』
ある文字列やデータの集合(pythonでは リスト や ディクショナリ 、 タプル )の中に、ある文字を含んでいるかどうかを判定したい場合には、下記のように”in”を使って判定することができます。
inp = input(">") # キーボードから文字列を入力
if "天気" in inp :
# 文字列の中に含まれているかを判定
print("天気に関連するメッセージです")
test_list = ["挨拶","天気"]
if "天気" in test_list :
# リストの中に含まれているかを判定
print("天気がリスト中にありました")
test_dict = { "挨拶":"おはようございます", "天気":"晴れ" }
if "天気" in test_dict :
# ディクショナリのキーの中に含まれているかを判定
print("天気がディクショナリ中にありました")
test_touple = (["おは","晴れ"],["こんにち","雨"])
if ["こんにち","雨"] in test_touple :
# タプルの中にタプル ["こんにち","雨"] が含まれているかを判定
print('["こんにち","雨"]がタプル中にありました')
print("終わり")
また、”not”を付けて、”not in”とすることで、含んでいないという判定ができます。
『上記以外の場合』・・・を行う
ある条件判定をした後、『上記以外の場合』・・・を行う という判定を行う場合は、”else :” を使います。
以下に例を示します。
inp = input(">") # キーボードから文字列を入力
if inp == "晴れ" :
print("晴れです")
else :
print("たぶん曇りです")
イメージを図示すると以下のオレンジ色部分になります。
『上記以外で・・・の場合』・・・を行う
ある条件判定をした後、『上記以外で・・・の場合』・・・を行う という判定を行う場合は、”elif ・・・ :”を使います。”elif”は、英語のelse ifの短縮になっています。
以下に例を示します。
inp = input(">") # キーボードから文字列を入力
if inp == "晴れ" :
print("晴れです")
elif inp == "雨" :
print("雨です")
イメージを図示すると以下のオレンジ色部分になります。
最後に
本記事では、プログラミングの基本の1つである条件判定(if文)の種類・パターンについて解説しました。
【条件判定の種類】
・ 『もし・・・の場合』・・・を行う “if ・・・ :”
・ 『上記以外の場合』・・・を行う “else :”
・ 『上記以外で・・・の場合』・・・を行う “elif ・・・ :”
【条件式の比較の種類】
・ 『~が~と同じ』 “==”
・ 『~が~と異なる』 “!=”
・ 『~が~以上・以下・未満・超えている』 “>=”, “<=”, “<“, “>”
【条件式の組み合わせ】
・ 複数の条件を組み合わせた判定 “and”, “or”
【その他】
・ 『~~~~~ではない』 “not”
・ 『~を含む』、『~を含んでいない』 “in”, “not in”
次回は別の基本について解説しますので、ご期待ください!
この記事へのお問い合わせや、無料のサポート、一歩踏み込んだ有料サポートが必要な場合は、ホームページからメールで受け付けています。お気軽にご連絡ください。
コメント
以下のご質問あり。
全然わかっていないのに質問させていただきますが、
Excelでもifってありますが、同じ考え方なのでしょうか。
【回答】
同じですね。
構文は違っていて
Excelの場合は、
=IF(<条件>,<①>,<②>)
になっています。
pythonでは以下になります。他のPG言語も同様です。
if <条件> :
<①>
else :
<②>
ちなみに、
上記のExcelの記述は、
Excelのセル内に記載する”関数”です。
Excelの場合、さらに マクロ機能で
VBAというPG言語が書けますが、
そこでは、pythonと類似した記述で
同じことができます。