【Python】if構文で「もし〜なら実行する」の書き方をマスターするよ!

【Python】if構文で「もし〜なら実行する」の書き方をマスターするよ!

「if構文」で条件分岐させよう!

前回の「while構文」では、条件を満たす間だけ繰り返すって書き方をおぼえたね。今回はちょっと条件によって別々の命令を出す方法をやってくよ。使うのは「if構文」。マスターすれば「もし〜なら実行する」って命令が書けるようになるよ!ちなみにこういう条件別に命令を書くことを「条件分岐」と言うので覚えておこう!

if構文の書き方を覚えよう

まずは書き方をみてみるよ。

if 条件文:
    条件を満たすときに実行する命令
else:
    条件を満たさないときに実行する命令

for構文やwhile構文と同じように、実行したい命令は行の最初をインデントして書くんだね。ちなみに「条件をみたさないとき」のelseは必要なければ省略してもいい。そのときはこんな書き方になるんだ。

if 条件文:
    条件を満たすときに実行する命令

if構文を使ってみよう!

それじゃあ例題をやってみよう。

1から10までを順番に数えていき、5以下のときは「小さい」と表示してください。それ以外の時は「大きい」と表示してください。

それじゃあ先に正解を書いちゃうね。あとから解説していくよ。

# codeing=utf-8

for i in range(1, 10+1):
    if i <= 5:
        print("小さい")
    else:
        print("大きい")

▽ 実行結果

小さい
小さい
小さい
小さい
小さい
大きい
大きい
大きい
大きい
大きい

解説

まず3行目は前にもやった「for構文」だ。これで1から10まで数えてるんだね。

for i in range(1, 10+1):

そして4〜7行目がif構文。for構文の中にさらにif構文が入ってるんだね。だから4〜7行目全体がインデントされてる。5行目と7行目はif構文の中身だから、さらにインデントされてることに注目だ。

for i in range(1, 10+1):
    if i <= 5:
        print("小さい")
    else:
        print("大きい")

4行目をみてみよう。「i <= 5」は比較演算子だ。「iが5以下のとき」は6行目の「print(“小さい”)」が実行される。そして6行目に「else:」があるから、「それ以外のとき」は7行目の「print(“大きい”)」が実行されるんだ。

条件を組み合わせて使う

if構文で使う条件は、組み合わせて使うこともできる。組み合わせるときは「and」「or」「not」を使うよ。これらを「論理演算子」と言うから覚えておこう。それぞれの意味と使い方は下の表にまとめてみた。

論理演算子 意味 例の意味
and 両方の条件を満たす (a==1)and(b==2) aが1で、かつbは2のとき
or どっちかの条件を満たす (a==1)or(b==2) aが1、もしくはbが2のとき
not 条件を満たさない not(a==1) aが1と等しくないとき(a!=1と書くのと同じ)

andは省略することもできる!

例えば「変数aが1以上5以下のとき」っていう条件をandを使ってかくとこうなる。

if(1<=a)and(a<=5):

これはandを省略して書くこともできるんだ。その書き方はこんな感じ。

if 1<=a<=5:

並び順をみれば(1<=a)と(a<=5)が合体してることがわかるね。もちろん書き方は自由だから、どっちの書き方でも大丈夫だよ。

例題をやってみよう

それじゃあ条件を組み合わせるif構文の例題をやってみよう!問題はこんな感じだ。

1から10までを順番に表示してください。そのとき2の倍数のときは「○」、3の倍数のときは「×」を、2の倍数でかつ3の倍数のときは「△」も一緒に表示してください。

それじゃあ今回も先に正解を書くよ。あとから解説をするのでみていこう!

for i in range(1, 10+1):
    print(i)
    if i%2 == 0:
        print("○")
    if i%3 == 0:
        print("×")
    if (i%2 == 0)and(i%3 == 0):
        print("△")

▽ 実行結果

1
2
○
3
×
4
○
5
6
○
×
△
7
8
○
9
×
10
○

最初のポイントは「2の倍数のとき」みたいな倍数の書き方だ。これは3行目の「i%2 == 0」でOK。「%」は前にもやった演算子で「割り算の余り」って意味だった。だから「i%2 == 0」の意味は、「iを2で割った余りが0」ってことになる。つまり余りが0でピッタリ割り切れるんだから2の倍数ってことになるんだ。

同じ考え方で「3の倍数」は「i%3 == 0」で書ける。そして「2の倍数でかつ3の倍数」という書き方が7行目だ。

    if (i%2 == 0)and(i%3 == 0):

さっきやった論理演算子の「and」だ。これでやりたいことがきちんとできたね!

elifを使って複雑な条件をスッキリ書く

条件はどんどん追加していけるけど、複雑になるとごちゃごちゃしてわかりにくくなる。そんなときに便利なのが「elif」だ。「○○じゃないとき」っていう条件をたくさん繋げる時にスッキリかけるようになるよ。

①:12の倍数のときは「○」と表示する
②:①じゃなくて、4の倍数のときは「△」と表示する
③:①でも②でもなくて、2の倍数のときは「×」と表示する
④:①②③のどれでもないときは「☆」と表示する。

こんな問題があったときの条件式の書き方をみてみよう。まずは普通に「if」と「else」で書いてみる。

if(i%12 == 0):
    print("○")
else:
    if(i%4 == 0):
        print("△")
    else:
        if(i%2 == 0):
            print("×")
        else:
            print("☆")

こんなふうにifとelseの中に、さらにifとelseを入れていけば書けるんだね。ただこの書き方は正直見にくいよねw じゃあ次は「elif」で書いてみるよ!

if(i%12 == 0):
    print("○")
elif(i%4 == 0):
    print("△")
elif(i%2 == 0):
    print("×")
else:
    print("☆")

かなりスッキリしたと思う!よくみると「else: if」がくっついて「elif」になっただけなんだ。最後だけはいつも通り「else」なので注意しよう。

もちろん「elif」を使わない書き方でもちゃんと動くからどっちでもいいんだけど、なるべくスッキリ見やすい書き方をするのがおすすめだよ!

「break」を使って繰り返しをやめる

最後に「繰り返しをやめる」という書き方を紹介するよ。繰り返しをやめたい条件のときに「break」を書けばいい。さっそく例題をみてみるよ。

1,2,3…と数をかぞえて表示していき、10を超えたら数えるのをやめてください。
# codeing=utf-8

count = 1

while True:
    print(count)
    count = count+1
    if(count > 10):
        break

▽ 実行結果

1
2
3
4
5
6
7
8
9
10

解説

まず3行目では「count」という変数をつくって初期値は「1」にしてる。そして最初に注目してほしいのは5行目の「while True:」だ。

while True:

これは前に出てきた「永遠に繰り返す」という命令だったね。その中に6・7行目の「print(count)」と「count = count+1」があるから、「まず数を表示して、次に数を1つ増やす」ってことをしてるんだ。

    print(count)
    count = count+1

そして最後に注目して欲しいのが7・8行目。if構文の中に「break」が入ってる。ここで「countが10を超えたら繰り返しをやめる」って命令を出してるんだ。

    if(count > 10):
        break

こんなふうに、繰り返しの命令は、for構文やwhile構文やif構文にbreakなどを組み合わせて使うことが多い。最初は難しく感じるかもしれないけど、書き方のパターンはそんなに多くないから慣れればカンタンに感じるようになってくるよ!あせらずしっかり覚えよう。

今日のまとめ

  • 「if構文」で条件分岐をしよう!
  • 「and」などの「論理演算子」を覚えよう!
  • 「elif」を使ってスッキリ書こう!
  • if構文と「break」で、繰り返しを止める書き方をおぼえよう!