Python入門
if文とインデントによるブロック

Pythonの初心者向け入門解説、人気のプログラミング言語Python
公開日:2020-09-09 最終更新日:2024-01-24

第5回.if文とインデントによるブロック


Python if文 ブロック 比較演算り 論理演算子

プログラムとは処理手順であり、突き詰めれば条件分岐しながら繰り返し処理を行うものです。
条件分岐はプログラミング言語に無くてはならない命令になります。
Pythonにおける条件分岐はif文になります。


他の言語では分岐命令として複数用意されている場合もありますが、Pythonではif文だけになります。
良くあるswitch文やVBAのSelect Case文はPythonには存在しません。

Pythonの特徴として、インデント(字下げ)によるブロック定義があります。
複数命令を一塊のブロック定義する方法として、Pythonではインデント(字下げ)が使われます。
Pythonの記述の決まり(ブロック、行継続、コメント)を先に説明してから、if文の説明に入ります。

目次

インデントによるプロック

Pythonでは :(コロン)で終わった行の次の行からインデントが続く範囲がブロックとなります。
インデント(字下げ)は半角スペースを使用します。
このインデントの文字数は何文字でも文法としては構いませんが、
PEP8にも書かれている通り、基本はスペースを4つを使いましょう。
多くのIDE(統合開発環境)の既定はスペース4つになっているので、そのまま使いましょう。

PEP8のインデントについての記述部分
1レベルインデントするごとに、スペースを4つ使いましょう。

行を継続する場合は、折り返された要素を縦に揃えるようにすべきです。
括弧やブラケットおよび波括弧で囲まれた要素については、Python が暗黙のうちに行を結合することを利用して揃えます。そうでない場合は、手でインデントさせることで揃えます。
突き出しインデントを使う場合は、次のことを考慮すべきです
: はじめの行には引数を付けずに次の行以降をインデントし、継続行だとはっきりわかるようにしましょう。:

複数行を継続したときにインデントする場合は、4つスペースを使うルールを守らなくても構いません。


行の継続

1つの文(1行)が長くなりすぎてしまった等、改行して次の行に続けて書いていきたい場合が出てきます。
Pythonでは、1つの文を複数行に分けて記述する場合は、
\(バックスラッシュ、Windowsでは¥)を書くと次の行に続けて書くことができます。

Python if文 ブロック 比較演算り 論理演算子

[]、()、{}([]はlist、()はtuple、{}はdict、set)これらの括弧で囲まれた内側で改行する場合は、
\(バックスラッシュ、Windowsでは¥)を書かずに次の行へ続けられます。

Python if文 ブロック 比較演算り 論理演算子


コメント

Pythonでは、#(シャープ)から後ろ(行の最後まで)がコメントになります。
コメントはスクリプトの実行に影響を与えません。

コメントは、行頭からでも、行の途中からでも書くことができます。

Python if文 ブロック 比較演算り 論理演算子
※これはVisual Studioの画面です。


if文の構文

以下での真偽とは
真とは、条件式を評価した結果がTrue
偽とは、条件式を評価した結果がFalse

if 条件式1:
    条件式1が真(True)の場合に行う処理ブロック
elif 条件式2:
    条件式1が偽(False)かつ条件式2が真(True)の場合に行う処理ブロック
elif 条件式3:
    条件式1, 2が偽(False)で条件式3が真(True)の場合に行う処理ブロック
else:
    すべての条件式が偽(False)の場合に行う処理ブロック

条件式のおよびelseの後ろの :(コロン) はブロックの始まりとして必ず書く必要があります。

elifとelseは省略できます。
elifは何個でも書くことができます。
elifは、他の言語ではelse ifと記述するものが多いです。
VBAではElseIfと書きます。

処理ブロックには、複数の命令文を記述することができます。

上から順に条件式が評価され、最初に真になったブロックが処理されます。
条件式が真になりそのブロックが処理された後は、他の条件式を評価することなくif文は終了します。

全ての条件式が真とならなかった(全てが偽の)場合に、elseのブロックが処理されます。
全ての条件が偽でelseが省略されている場合は、if文は何も処理することなく終了します。

条件式には、あらゆる式とオブジェクトを入れることができます。
式には、比較演算子や論理演算子を複数含めることができます。

a=5
b=3
#分母が0の場合は除く
if b!=0 and a%b==0:
    print("余りは0です")
elif b!=0 and a%b==1:
    print("余りは1です")
elif b!=0:
    print("余りは"+str(a%b))

str()は組み込み関数で、数値を文字列に変換します。
+演算子は、文字列同士では文字列連結になります。
文字列に関しては、後々に詳しく解説します。
第8回.文字列操作(str型)
・文字列リテラル ・文字列演算子 ・文字列のインデックスとスライス ・format()関数 ・format()メソッド ・f-string(フォーマット済み文字列リテラル) ・strのメソッド
第12回.組み込み関数一覧
Pythonには数多くの関数と型が組み込まれており、様々な処理を行うことができます。組み込み関数は、Python入門の中でもすでにいくつか使用していますし、これからも頻繁に使用していきます。全部で69個あります。


比較演算子

演算子 説明
== 左辺と右辺が等しい
!= 左辺と右辺が等しくない
> 左辺が右辺より大きい
>= 左辺が右辺より大きい または 等しい
< 左辺が右辺より小さい
<= 左辺が右辺より小さい または 等しい
is 2つのオブジェクトが同一
is not 2つのオブジェクトが同一ではない
in 左辺が右辺の要素に含まれている
not in 左辺が右辺の要素に含まれていない

2つのオブジェクトの単純な値比較には、==から<=までを使います。

Python if文 ブロック 比較演算り 論理演算子

if文において条件式の判定は、このように会話モードで確認できます。
True(真)のとき、if文なら当該条件式のブロックが処理されます。

==とisの違い

==は、オブジェクトの値が等しいかの判定です。
isは、オブジェクトが同一かを判定します。

同じ結果になる場合も多くありますが、、
int型やfloat型でisを使用すると、意図に反した結果になる場合があります。

Python if文 ブロック 比較演算り 論理演算子

こうなる理由を考えても仕方ないので、
値の比較においては==を使いisは使用しない事です。

当面は、isを使うのは、
is None
この場合くらいになります。

Noneについて

値が存在しないことを表す特種な値です。
他の言語ではnullと表現されるものと同じようなものになります。

関数やオブジェクトが返すものがない場合にNoneを返します。
これを判定する場合に、
is None
これを使います。

Print関数は値を表示してNoneを返します。

Python if文 ブロック 比較演算り 論理演算子

inとnot in

inとnot inは、コンテナオブジェクトに対して、左辺の値が右辺の要素に含まれているかどうかを判定します。
代表的なコンテナオブジェクトには、
list
tuple
dict
set
これらがありますが、これらについては次回以降個別に説明します。
ここでは、listだけ紹介しておきます。
listは[]を使い作成することができます。
#listでのinとnot in
items=["a","b","c"]
print("b" in items)
print("b" not in items)
print("d" in items)
print("d" not in items)

Python if文 ブロック 比較演算り 論理演算子


論理演算子

演算子 説明
or 論理和:どちらか一方がTrueであればTrue
and 論理積:両方がTrueの場合のみTrue
not 否定:FalseならTrue、TrueならFalse

orもandも、結果が確定した時点で返されます。
つまり、左辺だけで結果が確定(orなら左辺がTrue、andなら左辺がFalse)する場合は、右辺は評価されません。

orもandも戻り値の型がbool型と言う訳ではありません。
orは、左辺の評価結果がTrueなら左辺を返し、それ以外の場合は右辺を返します。
andは、左辺の評価結果がFalseなら左辺を返し、それ以外の場合は右辺を返します。

Python if文 ブロック 比較演算り 論理演算子

複数の比較演算の連結

Pyhtonでは、
a > b > c
このように比較演算を連結させて記述することができます。
これは、
a > b and b > c
これと等価になります。

Python if文 ブロック 比較演算り 論理演算子

真の判定、偽の判定

Pythonでは、偽となるオブジェクト以外は真と判定されます。
偽となるオブジェクト
・False
・None
・数値の0(0.0や0jも)
・空オブジェクト(空の文字列、空のリスト・タプル・辞書等)


上記以外は、すべて真と評価されます。
上記以外全てと書きましたが、
メソッド__bool__()がFalseを返す場合や、
__bool__()が未定義で__len__()が0を返す場合も偽となります。
ただし、この入門の時点では考慮する必要が無いものです。

真偽を確認するには、組み込み関数のbool()を使います。

Python if文 ブロック 比較演算り 論理演算子

pass文

pass文は何もしない文です。
Pythonではインデントでブロックを定義する為、空のブロックを定義することができません。
しかし、どうしてもそこにブロックが必要となる場合もでてきます。
このような場合に、pass文を使います。

以下の例は少々無理やりではありますが、if文の説明の続きとして、

a=5
b=0
if b==0:
    #分母が0の場合は何もしない
    pass
else:
    print("余りは"+str(a%b))




同じテーマ「Python入門」の記事

第2回.対話モードの使い方とヘルプ
第3回.変数とデータ型
第4回.数値計算(四則演算)
第5回.if文とインデントによるブロック
第6回.for文とイテラブルオブジェクト
第7回.while文とデバッグ(ステップイン)
第8回.文字列操作(str型)
第9回.リスト(list型、配列)
第10回.タプル(tuple型、イミュータブル)
第11回.辞書(dict型)
第12回.組み込み関数一覧


新着記事NEW ・・・新着記事一覧を見る

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ