どうも、としです。
今回Python講座の第7章としてif文について解説していきます。
基本的にプログラムは
- 繰り返し
- 条件分岐
この2つが成り立っています。
その1つの繰り返し、for文については6章で解説しています。
まだ見ていないというかたは、ぜひそちらも見てくださいね。
でっ、今回の内容としては、、
・if文の書き方
・if文で起こしやすい間違い
こういった内容で解説していきますね。
条件分岐if文とは
でっ、そもそもこの条件分岐(if文)ってどういったことをやるのかというと、、
日本語で言えば
「もし~だったら」
っていう内容になります。
もし●●だった場合には処理をさせたい。
これをやっているのがif文になります。
例えば、、
もし数字の100だったら、print文で満点という文字列を表示する。
それ以外だったら、点数を表示する。
こうやって条件を分岐させたいときに使うのがif文になります。
if文の書き方
この条件を分岐させる時に重要なのが、分岐させる条件ですね。
日常でも何かを分ける時に、、
- 一致するもの
- 違うもの
- 以上や以下
こんな感じで分けるときがありますよね。
if文でもこれと同じことが出来るんですね。
でっ、その時に条件分岐のために記号をしようします。
その記号の一覧がこちらになります。
記号 | 分岐の内容 |
---|---|
== | 一致する |
!= | 一致しない |
> | より大きい |
< | より小さい |
>= | 以上 |
<= | 以下 |
あとこれは条件というのではないのですが、
else:
これを使用することによって
「条件に当てはまらない場合」
という分岐をさせることが出来ます。
ここまでの内容を使って実際にif文を書いてみたいと思います。
my_score = 62
if my_score == 100:
print('満点です')
elif my_score >= 70:
print('合格です')
elif my_score > 55:
print('ギリギリです')
else:
print('補修です')
●コードの解説
まずはmy_scoreという変数に62という数字を代入します。
その点数に応じてif文で条件分岐をさせています。
このif文の書き方として、
if 条件:
処理
elif 条件:
処理
else:
処理
というのが基本の書き方になります。
ポイントとしては
●if文のポイント
・if文、elif文、else文の最後に『:』を付ける
・最初はif文、2つ目以降はelif文、それ以外はelse文
・処理はインデントをする
この3つが重要なポイントです。
でっ、今回であれば
- 100に一致
- 70以上
- 55より大きい
- それ以外
という感じ分岐をさせていますね。
処理としては出力される文字をわけています。
ちなみに今回は62なので55より大きいの条件に一致するので「ギリギリです」が表示されます。
こういった感じでif文を作ることができます。
if文で起こしやすい間違い
次は起こしやすい間違い、エラーという部分ですね。
個人的にif文を使っていて起こしやすいエラーってこの2つになるかと思っていて、、
- 変数の型によるエラー
- 順番によるエラー
結構この2つを間違ってしまって
「あれ?なんか思った処理にならないぞ、、」
ということがあります。
変数の型によるエラー
まずは変数の型によるエラーですね。
ここまで順番にPython講座を見てくれている人は
「あぁ、多分あのことだな」
と予想がつく人も多いじゃないかなと思います。
変数の部分って超重要なので、もし変数についての解説をまだ読んでいない方は、まずこちらから読んでくださいね。
と、、話を戻してこちらのコードを見てください。
num = '1'
if num == 0:
print('numは0です')
elif num == 1:
print('numは1です')
else:
print('numは0と1以外です')
これはどの条件に一致すると思いますか?
「numに1が代入されているから、numは1ですが表示されそう!」
とぱっと見なりそうなのですが、、
実はこのコードではelse文が実行されて「numは0と1以外です」と表示されます。
この理由としては1行目の
num = '1'
この部分が関係しています。
というのもこれは変数に1を代入しているわけですが、、
もう少し詳しく言うと『変数に文字列の1を代入』しています。
でっ、今回の条件分岐では
elif num == 1:
なので『数字の1』と一致した場合というのが条件です。
数字の1と文字列の1は違うものとして扱われるため、今回はelse文の処理がされていたわけですね。
こんな感じで変数の型に注目しておかないと、思った処理がされなかったりします。
順番によるエラー
あとはif文を書く順番によっても思った処理がされない場合があります。
例えば、、
num = 1
if num >= 0:
print('numは0以上です')
elif num == 1:
print('numは1です')
else:
print('numはマイナスです')
これはどういった処理がされると思いますか?
やっている事としては
if num >= 0:
という事で0以上の値かどうかを判断しています。
次のelif文では
elif num == 1:
numが数字の1かどうかを判断しています。
なので今回はnumに数字の1が代入されているので数値も型もあっています。
なのでおそらくこのコードの処理としては、、
elif num == 1:
の処理である「numは1です」が表示されるのを意図して作っているはずです。
でも実際にこのプログラムを動かしてみると分かるのですが、出力されるのは
numは0以上です
この文字列なんですね。
というのもif文というのは上から順番に条件に当てはまるかを確認していきます。
でっ、一致したものがあれば他の条件の処理はしないという動きになっているんですね。
なので今回はnumに1が入っている為、
if num >= 0:
というif文で条件に一致してしまっています。
なので本当にやって欲しい
elif num == 1:
まで進まずに処理が終わってしまっているわけですね。
そのためif文を書くときには、、
狭い範囲の条件から条件分岐を作っていく
これがすごく重要な部分になります。
今回で言えば
- if num >= 0:
- elif num == 1:
この2つのどちらの方が範囲が狭いですか?
上は0以上、下は1と一致なので下の文ですよね。
なので今回のコードを正しく書くなら
num = 1
if num == 1:
print('numは1です')
elif num >= 0:
print('numは0以上です')
else:
print('numはマイナスです')
この順番で書かないと思うような結果が出力されないです。
なので『順番』というのをif文では必ず意識してくださいね。
まとめ
といった感じで今回if文について話をさせてもらいました。
内容をまとめておくと
・if文の書き方
・条件を分岐させる記号
・型によるエラー
・順番によるエラー
こんな内容になります。
次の第8章についてはちょっと応用の部分の話です。
for文とif分っていうものを組み合わせですね。
最初にも話したように
- 繰り返し
- 条件分岐
この2つがプログラムの大本になる部分です。
その2つを組合わせるとどういったことが出来るのかを解説していくので、ぜひ8章もお付き合いくださいね。