Python

【Python入門🔰】if 文の使い方と注意点

サイトの移行先

プログラミングを学習する上で、if 文は必ず通ります。人によっては四則演算よりも使う機会が多いかもしれません。

データをどういう風に整理して処理するか、自分の思い通りにデータを扱うために if 文はなくてはならない存在です。故に、プログラミング学習者はスタートからまもなくしてIF文を学ぶことになります。

この記事では、プログラミング初心者から上級者まで様々なプログラマーが日常的に利用する、if 文の基本的な使い方と注意点について説明します。

使い方

まず、if 文の基本的な使い方から説明します。

更に詳細を知りたい場合は「8. Compound statements > 8.1. The if statement」を御覧ください。日本語訳されているので、英語が苦手な方でも読めますよ!

if:条件式によるデータの選定

"""
if 条件式:
  条件式が真のときに実行する処理
"""

my_info = {"name": "wataichi", "age": 27, "country": "日本", "favorite class": "数学"}

if my_info["name"] == "wataichi":
  print(f'こんにちは、{my_info["name"]}と申します!')


# 出力結果 >>> こんにちは、wataichiと申します!

if 文の基本は条件式です。

「 if 条件式 : 」という構文で指定した条件式が真のときに、その後に記述した処理が実行されます。

if 単体で使う場合、条件式が偽であればその後の処理は実行されません。

else:条件式を満たさない場合の処理

"""
if 条件式:
  条件式が真のときに実行する処理
else:
  条件式が偽のときに実行する処理
"""

my_info = {"name": "wataichi", "age": 27, "country": "日本", "favorite class": "数学"}

if my_info["age"] < 25:
  print("小さい頃の思い出はありますか?")
else:
  print("小さい頃の思い出は、、、いえ、覚えていませんよね。。")


# 出力結果 >>> 小さい頃の思い出は、、、いえ、覚えていませんよね。。

else を組み合わせることで、if で指定した条件式が偽のときに実行する処理を追加できます。

この時、else では条件式を指定できないので、if の条件式に当てはまらないデータ全てに else で指定した処理が実行されます。

条件を増やす場合は、次の elif を使用します。

elif:複数の条件式による分岐

"""
if 条件式1:
  条件式1が真のときに実行する処理
elif 条件式2:
  条件式2が真のときに実行する処理
else:
  条件式1・2が偽のときに実行する処理
"""

my_info = {"name": "wataichi", "age": 27, "country": "日本", "favorite class": "数学"}

if my_info["country"] == "アメリカ":
  print("アメリカ出身なの!?この前、友達と旅行しにいってきたよ!")
elif my_info["country"] == "イギリス":
  print("イギリスって、ハリーポッターの舞台だよね?行ってみたいな~")
elif my_info["country"] == "スイス":
  print("スイス出身なんだね!僕、フェデラー選手に憧れてるんだ!")
elif my_info["country"] == "日本":
  print("日本最高だよね!寿司、天ぷら、すき焼き、全部美味しい!幸せ!")
else:
  print("あ~、あそこね!いい国だよね!ちょっとごめん、急いでるからまた後でね!")


# 出力結果 >>> 日本最高だよね!寿司、天ぷら、すき焼き、全部美味しい!幸せ!

elif は if 文の中で複数回使うことができます。

条件分岐を行なうにあたって、「条件式1つだけで」というのは中々難しいと思います。

もちろん、分岐や条件の精査は、プログラムを複雑化させないために必要な工程です。
また、それはメモリへの負荷を低減させることにも繋がります。

一方で、複数の条件式による分岐もまた、データ処理をする上で必要な工程です。
if・else 同様に使えるようになっておきましょう。

for文との組み合わせ

my_info = {"name": "wataichi", "age": 27, "country": "日本", "favorite class": "数学"}

various_class = ["国語", "地理", "英語", "歴史", "物理", "体育", "化学", "数学"]


for vc in various_class:
  if vc == my_info["favorite class"]:
    print(f"{vc}が、だ~いすきなんだ!!")
  elif vc == "体育":
    print(f"もちろん、{vc}は大好きだよ!")
  else:
    print(f"いや~、{vc}は苦手なんだよなぁ。。")


"""出力結果
いや~、国語は苦手なんだよなぁ。。
いや~、地理は苦手なんだよなぁ。。
いや~、英語は苦手なんだよなぁ。。
いや~、歴史は苦手なんだよなぁ。。
いや~、物理は苦手なんだよなぁ。。
もちろん、体育は大好きだよ!
いや~、化学は苦手なんだよなぁ。。
数学が、だ~いすきなんだ!!
"""

if 文は複数の条件分岐に向いており、for 文は複数のデータアクセスに向いています。
これらを組み合わせることで、複数のデータを複数の条件式に当てはめた後、適切な処理を実行することができます。

# 偶数のリスト作成
lists = [number for number in range(1, 21) if number % 2 == 0]

print(lists)
# 出力結果 >>> [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

こちらはリスト内包表記の例です。

1~20の数字から偶数を選択してリスト化する処理が、この一文で実行できます。
リスト内包表記でも、if 文と for 文の組み合わせはよく使われます。

リスト内包表記などのリスト操作に関しては記事にもしておりますので、御覧ください。

注意点

if 文を使う際にエラーが発生しやすい箇所がいくつかあるため、それらについて説明します。

普段から使っている人でもたまにやってしまうことがあるかと思いますので、流し読み程度でも見ていってくださると嬉しいです。

:(コロン)とインデント

my_info = {"name": "wataichi", "age":27, "country": "日本", "favorite class": "数学"}


# コロンなし
if my_info["name"] == "wataichi"
# 出力結果 >>> SyntaxError: expected ':'


# インデントなし
if my_info["name"] == "wataichi":
print(f'こんにちは、{my_info["name"]}と申します!')
# 出力結果 >>> IndentationError: expected an indented block after 'if' statement on line 1

if 文だけではなく、Pythonではコロンとインデントが他言語よりも重要視されます。

Pythonでは、if 文・for 文・関数定義などをコロンとインデントによるブロック単位で記述するため、この2つを忘れるとエラーが発生してしまいます。

特にコロンは忘れてしまうことが多いかもしれません。

“else if” ではなく “elif”

my_info = {"name": "wataichi", "age":27, "country": "日本", "favorite class": "数学"}


if my_info["country"] == "アメリカ":
  print("アメリカ出身なの!?この前、友達と旅行しにいってきたよ!")
else if my_info["country"] == "イギリス":
# 出力結果 >>> SyntaxError: expected ':'

上記コードのエラーは、「else を記述しているのにその後にコロンが無いよ」という内容です。

「else if」自体がPythonにないため、「else」と記述された時点でその後にコロン以外が来るとエラーが発生します。

C言語やJava、Javascriptなどでは、条件式を追加する際に「else if」を用いますが、Pythonでは「elif」を用います。他言語を経験した方ほど、慣れるのに時間がかかるかもしれません。

Pythonは記述方法が見た目からもわかりやすく、プログラミング初心者の方が使い始めやすい言語である一方、たまに独特な記述をする場合があります。


私はPythonからプログラミング言語を使い始めたのでそこまで違和感はありませんが、他言語経験者からすると『んっ!?』となる部分がたまに出てくるのではないでしょうか。
「elif」もその内の1つかもしれません。

“=”(代入演算子)と”==”(比較演算子)

## 代入演算子
num = 100

if num = 100:
# 出力結果 >>> SyntaxError: cannot assign to subscript here. Maybe you meant '==' instead of '='?
  print("この数字は「100」です")
# 出力結果 >>> IndentationError: unexpected indent


## 比較演算子
num == 100
# 出力結果 >>> True

if num == 100:
  print("この数字は「100」です")
# 出力結果 >>> この数字は「100」です

「私は」ですが、これまでの算数・数学の経験からくるイコールの呪いかな?と思うくらい間違うことが多いです。

もっと言い訳すると、代入演算子は普段から多用しているけれど、比較演算子はたまにしか使わないから間違えてしまうのかなと思っています。皆さんもどうか気をつけてください。

まとめ

この記事では、if 文の基本的な使い方と注意点について説明しました。

初心者も中級者も上級者も、if 文は必ず通る道であり、データ処理をするときにはほぼ必ず使う手法です。

「条件式の設定」や「分岐の数」に工夫は必要ですが、そこを乗り越えれば自分の思い通りにデータを整理・処理できるので、様々な工夫を凝らしてみてください。

コメント

タイトルとURLをコピーしました