Pythonで条件分岐するためのif文
今回は条件分岐をするためのif文に関してです。
プログラミングをしていると、「ある条件の時はこの処理を、こういう条件の時はこの処理をしたい」と条件によって処理を変えたいなんてことも出てきます。
むしろやり始めたらそういうことばっかりだったりもします。
そんなわけで多用する文の1つではないでしょうか。
このifとforを組み合わせることにより、かなり色々なことができるようになるので、是非ともマスターしましょう。
とりあえず使ってみる
まずは1条件で分岐させてみます。
a = 1
if a == 1:
print("aは1です")
実行結果
aは1です
まず1行目でaを1と定義し、その後、3行目でaが1だったら次の処理(print(“aは1です”))をしろとしています。
ではこのaが2になったらどうなるでしょうか?
a = 2
if a == 1:
print("aは1です")
実行結果
実行結果には何も表示されません。
これはaは2であり、1ではないので、条件に合わなくなってしまったためです。
この時にforと同様に、ifの行の最後のコロンと、次の行のインデントを忘れないようにしてください。
ifに関してもブロックという考え方が重要で、それによりどこからどこまでがifの影響を受けるのかが規定されています。
もう1つ、if aのあとのイコールが2つあることに気づいたでしょうか?
これは比較演算子と呼ばれるものです。
a = 1としてしまうと、aを1と定義するのと同じ記号になってしまい、混同してしまいます。
そのため比較用の記号である「比較演算子」が準備されているのです。
比較演算子とは?
比較演算子にはこのようなものがあります。
演算子 | 意味 | 記入例 | 記入例の意味 |
== | 等しいか | a == b | aがbと等しいか |
!= | 等しくない | a != b | aがbと等しくないか |
> | より大きいか | a > b | aがbより大きいか |
< | より小さいか | a < b | aがbより小さいか |
>= | 以上か | a >= b | aがb以上か |
<= | 以下か | a <= b | aがb以下か |
先ほど「等しい」を示す「==」を使ったので、他のものも使ってみましょう。
a = 1
if a != 1:
print("aは1ではありません")
実行結果
aは1なので、「!=」とした場合、何も表示されませんね。
ではaを2にしてみましょう。
a = 2
if a != 1:
print("aは1ではありません")
実行結果
aは1ではありません
ちゃんと「等しくない」と判断してくれています。
では大小を比較する「>」「<」「>=」「<=」はどうでしょうか?
a = 2
if a > 1:
print("aは1より大きいです")
実行結果
aは1より大きいです
aは2なので、確かに1より大きいですね。
a = 2
if a < 1:
print("aは1より小さいです")
実行結果
aを2としているので、1より大きいため、何も表示されません。
a = 2
if a >= 1:
print("aは1以上です")
実行結果
aは1以上です
a = 2
if a <= 1:
print("aは1以下です")
実行結果
「>=」「<=」もちゃんと思った通りに動いてくれています。
ただ「>=」「<=」は以上以下なので、指定した数字も含むはずです。
実験してみましょう。
a = 2
if a >= 2:
print("aは2以上です")
実行結果
aは2以上です
a = 2
if a <= 2:
print("aは2以下です")
実行結果
aは2以下です
ちゃんと認識してくれていますね。
ちなみに以上以下の比較演算子「>=」「<=」の大小とイコールの記号を逆にするとどうなるでしょうか?
a = 2
if a => 2:
print("aは2以上です")
実行結果
File "<ipython-input-X-XXXXXXXXXXXX>", line 3
if a => 2:
^
SyntaxError: invalid syntax
a = 2
if a =< 2:
print("aは2以下です")
実行結果
File "<ipython-input-X-XXXXXXXXXXXX>", line 3
if a =< 2:
^
SyntaxError: invalid syntax
ちゃんと怒られます。ここら辺がプログラムらしく厳密なところですね。
また「等しい」という意味である「==」は文字に対しても使えます。
a = "abc"
if a == "abc":
print("aはabcです")
実行結果
aはabcです
ただし全く同じ文字でないと、「等しい」と判断してくれないので注意です。
例えば下の例では a = “abc “とcの後ろにスペースを入れてみました。
a = "abc "
if a == "abc":
print("aはabcです")
実行結果
すると実行結果には何も表示されず、同じ文字だと判断してくれていないことが分かります。
また文字に対しても、大小を比較する「>」「<」「>=」「<=」を使用することができます。
その場合、abcde…..vwxyzABCDE…..VWXYZの順に大きさを比較します。
ただ文字をこのように比較することは稀だと思いますので、説明は割愛します。
2条件以上の分岐
上では1つの条件を用いて、分岐させてみました。
それでは2条件以上の分岐はどうするのでしょうか?
その場合は、elifとかelseを用います。
まずはelseから解説します。
elseは最初の条件とは異なるものすべてを含む条件です。
a = 5
if a <= 2:
print("aは2以下です")
else:
print("aは2より大きいです")
実行結果
aは2より大きいです
この場合、elseの後ろには条件を書かずに、コロンで締めます。
またインデントに関しては、ifを同じ位置からelseを書き始めます。
ではさらに多くの条件を分岐させたい場合はどうすればよいでしょうか?
その際に活躍するのが、elifです。
a = 3
if a == 1:
print("aは1です")
elif a == 2:
print("aは2です")
elif a == 3:
print("aは3です")
実行結果
aは3です
もちろんさらにelseと組み合わせることも可能です。
a = 5
if a == 1:
print("aは1です")
elif a == 2:
print("aは2です")
elif a == 3:
print("aは3です")
else:
print("aは1, 2, 3ではありません")
実行結果
aは1, 2, 3ではありません
ここで1つ疑問が生まれます。
ifで条件分岐できるなら、複数の条件を使いたい時、elseとかelifを使わずに、全部ifを使えばいいじゃないかと。
やってみましょう。
a = 3
if a == 1:
print("aは1です")
if a == 2:
print("aは2です")
if a == 3:
print("aは3です")
実行結果
aは3です
うまく動いているように見えます。
ですが、こうすると分かりやすいことでしょう。
a = 1
if a == 1:
print("条件1:aは1です")
if a == 1:
print("条件2:aは1です")
if a == 1:
print("条件3:aは1です")
実行結果
条件1:aは1です
条件2:aは1です
条件3:aは1です
a = 1
if a == 1:
print("条件1:aは1です")
elif a == 1:
print("条件2:aは1です")
elif a == 1:
print("条件3:aは1です")
実行結果
条件1:aは1です
1つ目の例では、それぞれのifにおいてaが1か判断され、処理が行われています。
2つ目の例では、ifは1つのブロックとして判断され、条件判断は1度だけです。
今回は、2つのelifの条件にも合致しますが、合致する条件のうち一番上にある処理が行われます。
このように行いたい条件分岐によって、使い方を考えることが必要となりますが、マスターすれば色々なことが可能になります。
その1つが次に紹介するforとの組み合わせです。
forとの組み合わせ
前に紹介した繰り返しの関数forですが、条件分岐の関数ifとよく組み合わせて使います。
a = [1, 2, 3, 4, 5]
for i in a:
if i == 3:
print("iは3です")
else:
print("iは3ではありません")
実行結果
iは3ではありません
iは3ではありません
iは3です
iは3ではありません
iは3ではありません
この例では、1から5までを格納したリストaから順に1つずつ数字を取り出し、iに格納します。
その後、ifで条件を検討し、iが3の時に「aは3です」と表示しています。
これができるようになると、繰り返し処理中に条件に合うもののみを処理を行うなんてこともできます。
さらに条件が合ったら、繰り返し処理を抜けるということもできます。
その際にはbreakを用います。
a = [1, 2, 3, 4, 5]
for i in a:
if i == 3:
print("iは3です")
break
else:
print("iは3ではありません")
print("終わり")
実行結果
iは3ではありません
iは3ではありません
iは3です
終わり
この場合は、iが3になった時点で、「iは3です」と表示され、breakにより、forの繰り返しから強制的に抜けます。
そして、最後の「終わり」が表示されたわけです。
こうやって色々な文や関数を組み合わせることによって、できるプログラムの幅は広がっていきますので、楽しいですよね!
次回はそろそろPythonのデータ型なるものを解説していきます。
とりあえず今回はこんな感じで。
コメント