Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。
今回は「アラサーOLのためのpython入門講座」です!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。
今日はif文について解説します!場合分けが必要な処理をする際に使います。Pythonプログラミングで頻出の処理なのでマスターしましょう!この記事を読めば、実例や練習問題を通してPythonでのif文の基本的な使い方を習得することができます。
ぜひ最後までお付き合いください!
この記事はこんな人におすすめ
- 初心者だけどpythonを始めた!
- pythonの基本的な使い方を知りたい!
- 独学で学んだpythonの知識を整理したい!
Abstract | 条件分岐はプログラミングの必須処理
if、elif、elseなどのif文を使った条件分岐処理はコードを書けば使わないことはないというぐらい必須の処理です。変数の値に応じて処理内容を変えたいときはもちろん、コードの動作確認のためにテストモードで走らせるときや、必要なときだけ処理結果をprint()で出力するときなど、if文で条件分岐する場面は多岐に及びます。
この記事ではif、elif、elseの3つの構文について解説します。if文はある条件を満たすときだけ処理をしたい場合に使います。elif文はif文の条件を満たさないかつ別の条件を満たすときだけ処理を行う場合に使います。elseはどの条件にも当てはまらないときだけの処理を定義するために使います。if、elif、elseを組み合わせることで複雑な条件の処理でもコーディングすることができます。
Method | if, else, elifを用いた条件分岐の方法
if文の使い方を説明します。実際に手を動かしながら学んでいきましょう!Jupyter Notebookを立ち上げてコーディングしながら読み進めてください。
準備 | python notebookの新規作成
まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_conditional_branch」という名前のpython notebookを作成してください。ターミナルを立ち上げて~/python_practiceに移動、jupyter notebookを起動し、ブラウザから新規→Python3でpython notebookを開いて、ファイル→リネームでファイル名を決定します。
もしやり方がわからなければ、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」などで詳しく解説しているので、これらを見ながらやってみてください。
python notebookを起動したら、適宜Markdownセルに説明書きを加えながら下記の説明に沿ってコードを書いて実行していきましょう。Markdownセルやコードセルなどの用語やこれらの使い方は過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」を参照してください。練習問題の後にpython notebookの例を掲載します。もし書き方がわからなければそちらを見てください。
if文の使い方
まずはif文を単独で使ってみましょう。if文はある条件を満たすときだけ所望の処理を行いたいという場合に使います。以下のように書いて使います。
if(条件):
処理
...
「条件」には比較演算子など、返り値がbool型すなわちTrueかFalseとなるものを入れます。「if (条件):」以降、if文の中で行う処理はインデントして記述します。条件がTrueのときだけインデント内の処理が行われます。
「if (条件):」の最後は「:」コロンが必要です。コロンの後、インデントした行(インデントブロックと呼びます)の処理がif文の対象となる処理です。if文を終えるときはインデントを解除すればOKです。また、インデントは半角スペース4つで行います(過去記事「python入門講座 | pythonを使ってみよう3-4(pythonスクリプトのルールとフォーマットの基礎知識)」参照)。Jupyter NotebookやAtomエディタを使っている場合、「:」で改行したあとは自動でインデントされるので特に意識する必要はありません。
例1-1: bool型変数で分岐
Jupyter Notebookで例をいくつかやってみましょう。最初は単純な例です。「条件」にbool型の引数を代入します。以下を実行してみましょう。
# define a bool variable
proceed_if = True
# if branch
if(proceed_if):
print(' proceed_if is True:', proceed_if)
「proceed_if」がTrueなので、if文の中の処理が実行されます。「proceed_if is True: True」と表示されます。
「条件」のところはTrueの代わりに1としても処理されます。以下を実行してみましょう。
# define a int variable
proceed_if = 1
# if branch
if(proceed_if):
print(' proceed_if is True:', proceed_if)
「proceed_if」が1なので、if文の中の処理が行われます。「proceed_if is True: 1」と表示されます。
余談ですが、「条件」のところに条件式を書くのではなくbool型の引数を入れる処理は、実戦では例えばプログラムを書いたとき、正しい処理がてきているか等の確認をする場合に使います。「テストモードで走らせる」などといいます。
例1-2: 比較演算子で分岐
実際のプログラミングの条件分岐処理では「条件」のところで比較演算子を使います。例えば、「n」という変数が3で割り切れる場合にアホになるという処理をする場合に使います。以下を実行してみましょう。
# define a target number
n_trg = 9
# define a divisor
n_div = 3
# judge if one shoud be fool
if(n_trg % n_div == 0):
print(' Say %d foolishly!' % (n_trg))
「n_trg % n_div == 0」は「n_trg」が「n_div」で割り切れるときにTrueとなります。この例ではn_trgが9、n_divが3なので割り切れます。したがって、if文の条件はTrueなので処理が実行されます。「Say 9 foolishly!」と出力されます。
elseの使い方
次はelse文の使い方です。else文はif文と組み合わせて使い、条件を満たさない場合の処理を規定します。以下のように書きます。
if (条件):
条件を満たすときの処理
...
else:
条件を満たさないときの処理
「if (条件):」の後のインデントブロックは条件を満たすときの処理となります。インデントを解除して「else:」を書き、その後のインデントブロックが条件を満たさないときの処理となります。
例2-1: bool型変数で分岐
例をやってみましょう。まずはbool型変数を条件とする簡単な例です。以下を実行してみましょう。
# define a bool variable
proceed_if = False
# if branch
if(proceed_if):
print(' proceed_if is True:', proceed_if) # Not proceeded
else:
print(' proceed_if is False:', proceed_if) # Proceeded
今度は「proceed_if」がFalseなので「if (proceed_if):」内の処理には入らず、「else:」の処理に入ります。実行結果が「proceed_if is False: False」と表示されます。
「条件」の変数をint型にした場合もやってみましょう。0がFalseと同じ意味です。以下を実行してみましょう。
# define a int variable
proceed_if = 0
# if branch
if(proceed_if):
print(' proceed_if is True:', proceed_if) # Not proceeded
else:
print(' proceed_if is False:', proceed_if) # Proceeded
「else:」の処理が行われ、実行結果は「proceed_if is False: 0」となります。
例2-2: 比較演算子で分岐
比較演算子を使った例もやりましょう。例えば、変数nが3で割り切れない場合の処理を規定します。以下を実行してみましょう。
# define a target number
n_trg = 8
# define a divisor
n_div = 3
# judge if one shoud be fool
if(n_trg % n_div == 0):
print(' Say %d foolishly!' % (n_trg)) # Not proceeded
else:
print(' Just say %d' % (n_trg)) # proceeded
n_trgは8なのでn_div(3)で割り切れません。なのでelseの処理が行われます。3で割り切れない場合は普通に数字を言うべきなので「Just say 8」と表示されます。
elifの使い方
最後はelif文の使い方です。elifは他の言語(例えばCなど)では「else if」に相当します。Pythonの場合は「elif」という一単語として書きます。
elif文もif文と組み合わせて使い、条件が複数ある場合の分岐処理を規定します。以下のように書きます。
if (条件1):
条件1を満たす場合の処理
...
elif (条件2):
条件1を満たさないかつ条件2を満たす場合の処理
...
elif (条件3):
条件1も2も満たさないかつ条件3を満たす場合の処理
else:
どの条件も満たさない場合の処理
elifは何個でも書くことができます。ifとelifは上から順番に処理されます。ifの条件を満たす場合にはifの中の処理のみが行われます。条件1を満たさないかつ条件2を満たす場合に1つめのelifの中の処理が行われます。次のelifはこれまでの条件をどれも満たさないかつ条件3を満たす場合に処理が行われます。最後にelseを書いておけばどの条件も満たさない場合の処理を規定できます。
例3-1: bool型変数で分岐
単純な例からやりましょう。以下を実行してみてください。
# define a bool variable
proceed_if = False
proceed_elif = True
# if branch
if(proceed_if):
print(' proceed_if is True:', proceed_if) # Not proceeded
elif(proceed_elif):
print(' proceed_elif is True:', proceed_elif) # Proceeded
else:
print(' proceed_if is False:', proceed_if) # Not proceeded
print(' proceed_elif is False:', proceed_elif) # Not proceeded
proceed_ifがFalseなのでifの中の処理は行われません。一方でproceed_elifがTrueなのでelifの中の処理が行われます。実行結果は「proceed_elif is True: True」となります。
もしproceed_elifもFalseにすれば、elseの中の処理が行われます。以下を実行してみましょう。
# define a bool variable
proceed_if = False
proceed_elif = False
# if branch
if(proceed_if):
print(' proceed_if is True:', proceed_if) # Not proceeded
elif(proceed_elif):
print(' proceed_elif is True:', proceed_elif) # Not roceeded
else:
print(' proceed_if is False:', proceed_if) # Proceeded
print(' proceed_elif is False:', proceed_elif) # Proceeded
今度はelseの処理が行われ
proceed_if is False: False proceed_elif is False: False
と表示されます。
例3-2: 比較演算子で分岐
比較演算子で分岐する実戦的な例もやってみましょう。例えば、
- nが3で割り切れるときにはアホになって数字を言う
- nが3で割り切れないかつ2で割り切れるときには悲しんで数字を言う
- それ以外の場合は普通に数字を言う
のような分岐処理をすることにしましょう。以下のように実行します。
# define a target number
n_trg = 8
# define two divisors
n_div1 = 3
n_div2 = 2
# judge if one shoud be fool
if(n_trg % n_div1 == 0):
print(' Say %d foolishly!' % (n_trg)) # Not proceeded
elif(n_trg % n_div2 == 0):
print(' Say %d sadly!' % (n_trg)) # Proceeded
else:
print(' Just say %d' % (n_trg)) # Not proceeded
ifの条件はn_trgがn_div1で割り切れる場合に行われます。n_trgが8、n_div1が3なので割り切れません。elifの条件はn_trgがn_div2で割り切れる場合に行われます。n_div2は2なのでこちらは割り切れます。したがってelseの中の処理が行われます。実行結果は「Say 8 sadly!」となります。
Result | 練習問題
最後に練習問題です。以下の処理を行うコードを書いてみてください!
- 変数n_trg, n_lim1, n_lim2をそれぞれ7, 11, 17という値で定義する
- n_trgがn_lim1未満のときは「N_TRG is smaller than N_LIM1」(N_TRGはn_trgの値、N_LIM1はn_lim1の値)と出力する
- n_trgがn_lim1以上かつn_lim2未満のときは「N_TRG is equal or greater than N_LIM1 and smaller than N_LIM2」 (N_LIM2はn_lim2の値)と出力する
- n_trgがn_lim2以上のときは「N_TRG is equal or greater than N_LIM2」と出力する
- n_trgを15にした場合、20にした場合もやってみる
練習問題の回答例
できたら回答例を確認しましょう!下の画面をスクロールすると回答例が見られます!回答例2は関数とfor文を使うため入門編を超えていますが実戦的な例として記載しました。参考にしてみてください。また、今回の記事で出てきた他のコードも載っているので参考にしてください!
練習問題おつかれさまでした!
今日はここまでです。Python Notebookを終了しておきましょう。もしPython Notebookを終了方法がわからなければ過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」の「Python Notebookの起動・終了方法」の章を参照してください!
Conclusion | まとめ
最後までご覧いただきありがとうございます!if文(if-elif-else)を使った条件分岐を紹介しました!比較演算子とif文を使って条件に応じた処理をすることで、Pythonでできることの幅が広がります!ぜひマスターしましょう!
以上「python入門講座 | if文、else文、elif文を使ってみよう(条件分岐処理の方法)」でした!
またお会いしましょう!Ciao!
References | 参考
参考教科書
以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!
- 現場で使える! Python深層学習入門 Pythonの基本から深層学習の実践手法まで (AI & TECHNOLOGY)
深層学習をpythonで学ぶための教科書ですが、最初の60ページぐらいがpythonの基礎的な解説に割かれています。簡潔にまとまっていてわかりやすいです。