【Python基礎】条件分岐 if文 と比較演算子

  • URLをコピーしました!
目次

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の行の最後のコロンと、次の行のインデントを忘れないようにしてください。

あわせて読みたい
【Python基礎】繰り返し処理 for文 Pythonで繰り返し処理をするための文 Pythonで繰り返し処理するには、2つの文が存在します。 1つは今回紹介するfor文で、もう1つはwhile文です。 簡単に違いをいうと...

ifに関してもブロックという考え方が重要で、それによりどこからどこまでがifの影響を受けるのかが規定されています。

もう1つ、if aのあとのイコールが2つあることに気づいたでしょうか?

これは比較演算子と呼ばれるものです。

a = 1としてしまうと、aを1と定義するのと同じ記号になってしまい、混同してしまいます。

そのため比較用の記号である「比較演算子」が準備されているのです。

比較演算子とは?

比較演算子にはこのようなものがあります。

演算子意味記入例記入例の意味
==等しいかa == baがbと等しいか
!=等しくないa != baがbと等しくないか
>より大きいかa > baがbより大きいか
<より小さいかa < baがbより小さいか
>=以上かa >= baがb以上か
<=以下かa <= baが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のデータ型なるものを解説していきます。

とりあえず今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次