0から始めるPython基礎講座

【Python入門】条件分岐〜真偽値の分け方〜

りっくん

こんにちは、りっくんです。

今回は条件分岐の記述方法について解説していきます。

Pythonで条件分岐を実現させるためには「if文」と言うのを使用します。
また「if文」にも種類があるため、段階を踏んで解説していきます。

プログラミング学習はスクール通いもおすすめです!

皆さんは今、独学でプログラミングを学んでいらっしゃるかと思います。

でも考えてみてください、学習しているといっても「業務に還元できる」内容でないと案件も獲得できないですよね?

そこでおすすめなのかこちら「Winスクール」さんです。

こちらでは受講生一人ひとりのスキルや理解度に応じた指導を行い、業務に即した実践的な学習を個人レッスンで受けられるんです!
しかもただレクチャーするだけでなく、資格取得にも強いみたいなので
興味のある方はぜひ無料体験・カウンセリングに足を運んでみましょう!!

条件分岐 – if文

Exercise

変数aの値が100であれば、「成功」とコンソール上に出力しなさい。

上記のような練習問題をPythonのif文で書いてみましょう。

if文の定義について


回答としては以下のようなコーディングとなります。

if (a == 100) :
  print('成功')

Python内でのif文は以下のように定義して使用していきます。

                  if文の定義方法

また、今回のように複数行を使って1つの処理を実装する際
非常に大切な概念があります。

それは「インデント」というものです。

簡単に説明すると「適切に空白をつけてましょうね」というものです。
基本的には「Tabキー(スペース4つ分)を開ける」ことがセオリーとされています。

このルールを守らないと、実行した際にエラーが発生してしまいます。
(IndentationErrorと呼ばれます)
また、Tabキーとスペースを変に混合してしまうと、TabErrorというものが発生します。

エラー内容については
Python公式ドキュメントに詳しい内容が記されていますので、確認してみてください。

条件式について

今回の条件分岐・そして次回レクチャー予定の繰り返し文で多用する「条件式」は以下の記号と組み合わせて式を完成させる必要があります。

記号意味
==(=は2つ必要となります!)等しい
!=等しくない
<小さい(右辺の値を含まない)
>大きい
<=以下(右辺の値を含む)
>=以上
is等しい(オブジェクト)
not is等しくない(オブジェクト)

また、条件式の判定は下記を使用します。

記号意味
式1 and 式2式1と式2がTrue(真)
式1 or 式2式1もしくは式2がTrue(真)
not 式1式1がFalse(偽)

is, not isの使い方

上記の条件式の記号一覧を説明しましたが、「is」と「not is」は「オブジェクト」と言うのがキーワードになっておりますが理解しにくいかと思います。

なので「オブジェクト」について詳しく解説するべきなのですが…正直これだけで何記事も作れてしまうぐらい曖昧なもので、ふんわりしている概念なわけなのです。

ですので「オブジェクト = モノというふんわりしたもの」と軽く捉えていただければと思います。

ではいつ、is, not isを使用するかというと、基本的にこの2つを使用するときに活用します。

  • ・None(データがないと言う意味を指すオブジェクト)かどうかを確認する
    ・id()メソッドを使用して取得した値が同じなとき

実際にコーディングしてみましょう。
まずはNoneかどうかを確認する場合です。

a = None

if (a is None):
  print('aはNoneだよ')
  
print(type(a))
# <type 'NoneType'>

とある値がNoneかどうかを確認するためにはtype()メソッドを使用します。
type()メソッドは引数に与えられたオブジェクトがどのデータ型なのかを参照する関数です。

次にオブジェクトが同じかどうかを確認する場合です。

test_list_1 = [100, 200, 300]
test_list_2 = [100, 200, 300]
 
 
print(test_list_1 == test_list_2)
# ⇨True
print(test_list_1 is test_list_2)
# ⇨False
print(id(test_list_1))
# 44842688
print(id(test_list_1) == id(test_list_1))
# True
print(test_list_1 is test_list_1)
#True

リスト変数「test_list_1」と「test_list_2」、同じ数値がリスト内に格納されているのに

print(test_list_1 is test_list_2)

と記入して実行するとFalseとなってしまいますね。

オブジェクトを生成する際、他のオブジェクトとは重複させないように一意の番号(id)を付与します。

「test_list_1」と「test_list_2」は人間の目でデータを見ると同じに見えますが、異なるオブジェクトであるためFalseとなってしまうのですね。
念の為、id()メソッドで中身を確認してみましょう。

print(id(test_list_1))
print(id(test_list_2))

出力された値は確かに異なっていますね。

条件分岐 – 他の構文について

条件式が偽の時の処理 – if else

先ほどのif文では、指定した条件式が真の時に実行する処理を記述しますが
条件式が偽の時の処理は入れておりませんでした。

if-else文では条件式が偽の時に実行する処理を記述することができます。

書式は以下の通りです。

if (True) :
  #条件式が真の時に実行する文
  print('結果は真です')
else:
  print('結果は偽です')

複数の条件式を使う – if elif else

if文ないしif-else文では単独の条件式のみを扱う条件分岐の方法でしたが、
if-elif-else文では複数の条件式を使った条件分岐を記述することが可能です。

書式は以下の通りです。

if (a == '条件式1'):
  # 条件式1が真の場合に実行する文
  print('条件式1は真です')
elif (a == '条件式2'):
  # 条件式2が真の場合に実行する文
  print('条件式2は真です')
else:
  #いずれの条件にも当てはまらない時
  print('条件式1,2いずれも偽です')

まとめ

お疲れ様でした!

今回はインデントやエラーなど、よりプログラミングチックな情報が行き交っており理解が難しいところもあったかもしれません。

ただ、こういった概念は今後プログラミングをしていく上で非常に大切となるため、しっかり復習をしていきましょう!

この章でのまとめ

・条件分岐を使用するにはif文というものを使用する。
⇨if文の他にもif-else、if-elif-else文が存在する。

・複数行にまたがって一つの処理を組み込む際、インデントを意識する。
⇨正しくインデントが付けられていないとエラーが発生する。