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

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

第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が真の場合に行う処理ブロック
elif 条件式2:
    条件式2が偽かつ条件式2が真の場合に行う処理ブロック
elif 条件式3:
    条件式1, 2が偽で条件式3がTrueの場合に行う処理ブロック
else:
    すべての条件式が偽の場合に行う処理ブロック

条件式のおよび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型)
プログラミングでは文字列(テキスト)を扱う事は非常に多く最も基本的な処理と言えます。Pythonでは文字列はstr型になります。このstr型に対する操作として非常に多くの機能がPythonには用意されています。
第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 ・・・新着記事一覧を見る

CSV読み書き(csvモジュール)|Python入門(9月29日)
「Excel 4.0 マクロ」の使い方|VBA技術解説(9月28日)
CSV読み込みとopen()関数とwith文|Python入門(9月28日)
フォルダとファイルの一覧を取得(os,glob,pathlib)|Python入門(9月26日)
import文(パッケージ・モジュールのインポート)|Python入門(9月24日)
例外処理(try文)とexception一覧|Python入門(9月23日)
リスト内包表記|Python入門(9月22日)
Pythonの引数は参照渡しだが・・・|Python入門(9月21日)
lambda(ラムダ式、無名関数)と三項演算子|Python入門(9月20日)
関数内関数(関数のネスト)とスコープ|Python入門(9月18日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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