- 2018-8-17
- if, pythonプログラミング
- if, python, 複数
- 【Python】複数のif文を入れた複雑な条件分岐について解説 はコメントを受け付けていません
この記事では前回解説したif文の発展編について解説します。
if文の中にif文を入れたりします。
複数のif文を扱っていくことになるので、
もしif文の基礎から学んでみたい方は
こちらの記事を先にご覧ください。
まず、if文を扱うときに重要なインデントについて解説します。
【Python】if文とインデントの関係
まずそもそもインデントとは字下げのことです。
例題1をご覧ください。
#例題1 a = 3 b = 'Python' if a < 4: b = 'パイソン' print(b)
実行すると
『パイソン』と表示されます。
で、インデントは下記画像の赤枠部分です。
Python以外のプログラミング言語では
インデントはたいてい見た目の問題です。
インデントがあった方が見やすいからつけているわけです。
Python以外のプログラミング言語では
インデントってそこまで深い意味を持ちません。
でも、Pythonの場合、インデントには意味があります。
Pythonにおけるインデントはプログラムの一部として機能します。
なので、インデントになっていないために
Pythonだとエラーが出てしまうことがあるんです。
特に、if文中のインデントは重要です。
例題2をご覧ください。
インデントをなくしました。
#例題2 a = 3 b = 'Python' if a < 4: b = 'パイソン' print(b)
例題2を実行するとエラーがでます。
なぜ例題2はエラーが発生したのでしょう?
if a < 4: b = 'パイソン'
の
b = 'パイソン'
で、if文の途中なのにインデントがないと
b = 'パイソン'
はif文に関係のないものになってしまうからです。
if文の条件に合致した場合の結果が
ないからエラーになったわけです。
逆に
#例題1 a = 3 b = 'Python' if a < 4: b = 'パイソン' print(b)
とインデントがあると、
b = 'パイソン'
は、if文に合致した結果
変数bに『パイソン』を代入するという意味になります。
なんとなくわかっていただけたでしょうか。
こんな感じでPythonの場合、
if文の中はしっかりとインデントをあけないと
エラーが出てしまいますのでご注意ください。
【Python】if文の中にif文が複数入る複雑なタイプ
if文の中にif文を入れることもできます。
例題3をご覧ください。
#例題3 a = 30 b = 0 c = 5 if a < 20: if c == 10: b += 23 else: b += 10 else: if c == 10: b += 300 else: b += 9997 b += 2 print(b)
まず例題3では
a = 30 b = 0 c = 5
変数aに30、
変数bに0
変数cに5を
それぞれ代入しています。
それから
if a < 20: if c == 10: b += 23 else: b += 10
ここでif文が登場します。
もし変数aが20より小さい値ならという意味ですね。
しかもif文の中にさらにif文があって
変数cが10なら変数bに23を加えます。
変数aが20より小さい値だけど
変数cが10でないなら、変数bに10を加えます。
ただ、例題3では変数aが30なので
上記どれも当てはまりません。
だからさらに下の方に進んでいきます。
そこでここに移動します。
else: if c == 10: b += 300 else: b += 9997
上記は変数aが10より小さくない場合、
言い方をかえると10以上の場合の処理です。
実際、変数aは30なのでここが当てはまります。
で、cが10なら変数bに300を加えます。
でも、変数cは5なので当てはまりません。
そこでbに9997を加えます。
したがって、この時点で変数bは
0+9997=9999
となっています。
さらにプログラムはどんどん下に移動します。
b += 2 print(b)
変数bは9997ですが、
ここでは単純に条件に関係なく2を加えます。
だから変数bは9997+2=9999となります。
したがってprint(b)があるので
9999と表示されます。
こんな感じでif文の中に複数のif文を入れることもできます。
【Python入門】if文の応用パターン
最後にここまで勉強してきたif文を使って
例題を一緒にみていきましょう。
#例題4 a = 21 b = 0 if a < 10: b += 100 elif a < 20: b += 123 else: b += 10000 b += 1 print(b)
例題4を実行すると
『10001』と表示されます。
例題4について解説していきますね。
まず
a = 21 b = 0
ここで、変数aに21を代入し
変数bに0を代入しています。
次に
if a < 10: b += 100 elif a < 20: b += 123 else: b += 10000
ですが、もし変数aが10より小さいなら
変数bに10加えます。
でも、変数aは21なので、そのまま下の
elifに移動します。
elifでは変数aが20より小さいなら
変数bに123を加えます。
が、変数aは21なので、
ここでも該当しません。
なのでそのまま下のelseに移動します。
elseに変数aの21は該当します。
elseまでのいずれにも該当しなかったからです。
なのでelseのところで
変数bに10000が加えられます。
なので、変数bは0+10000=10000となります。
最後に
b += 1 print(b)
ですね。
ここで大事なのはインデントがないところですね。
インデントがないということはPythonでは
if文の中に『b += 1』が該当しないことを意味します。
そこで単純に現時点での変数bの数値、10000に
さらに1を加えます。
したがって変数bは
10000+1=10001
となり、実行すると
10001が表示されるわけですね。
今回も前回に引き続き、if文について勉強しました。
前回の記事はこちらです。
if文が関係する条件分岐はプログラミングの重要ポイントになることが多いです。
なので、この記事と前回の記事を何回も見返して
復習していただけるとうれしいです。
pythonを学ぶならこちらの動画講座がおすすめです
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする
かなり長い講座名ですね。
わかりにくそうな感じがします。ですが、pythonの基礎からしっかりとわかりやすく教えてくれます。
また、きれいなコードを書くための方法についても
教えてくれるので、周りが「どうやってそんなコードを書いてるの?」
とびっくりされるようになるかもしれません。それからWebアプリケーション開発の基本的なテクニックについても
教えてくれます。なので、pythonを使ってwebアプリケーションを作ってみようと
思っている方にもおすすめです。値段は時期によって違います。
詳しくはこちらをご覧ください。
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習
この講座ではまずpythonの基礎を学びます。
次に人工知能について学んでいきます。そして最終的にはpythonを使って文字認識や株価分析ができるような技術力が身につくようになっています。
単純に教科書的なpythonを学ぶのではなく
仕事でも使えるスキルを身につけたい方におすすめの講座です。なのに値段は恐ろしいほど安いです。
時期によって値段は変動するので
詳しくはこちらをご覧ください。
Pythonで機械学習:scikit-learnで学ぶ識別入門
この動画講座は広島大学准教授の先生が担当しています。
機械学習が専門の先生です。すごく深い知識が身につきます。
大学の先生の講義って難しそうってイメージがあるかもしれません。でもそんなことはありません。
すごくわかりやすいです。pythonで機械学習のスキルを身につけたい方におすすめです。
値段は時期によって違いますが、かなり、良心的な価格になっています。詳しくはこちらをご覧ください。