第5回.if文とインデントによるブロック
プログラムとは処理手順であり、突き詰めれば条件分岐しながら繰り返し処理を行うものです。
条件分岐はプログラミング言語に無くてはならない命令になります。
Pythonにおける条件分岐はif文になります。
良くあるswitch文やVBAのSelect Case文はPythonには存在しません。
複数命令を一塊のブロック定義する方法として、Pythonではインデント(字下げ)が使われます。
Pythonの記述の決まり(ブロック、行継続、コメント)を先に説明してから、if文の説明に入ります。
目次
インデントによるプロック
インデント(字下げ)は半角スペースを使用します。
このインデントの文字数は何文字でも文法としては構いませんが、
PEP8にも書かれている通り、基本はスペースを4つを使いましょう。
多くのIDE(統合開発環境)の既定はスペース4つになっているので、そのまま使いましょう。
括弧やブラケットおよび波括弧で囲まれた要素については、Python が暗黙のうちに行を結合することを利用して揃えます。そうでない場合は、手でインデントさせることで揃えます。
突き出しインデントを使う場合は、次のことを考慮すべきです
: はじめの行には引数を付けずに次の行以降をインデントし、継続行だとはっきりわかるようにしましょう。:
行の継続
Pythonでは、1つの文を複数行に分けて記述する場合は、
\(バックスラッシュ、Windowsでは¥)を書くと次の行に続けて書くことができます。
\(バックスラッシュ、Windowsでは¥)を書かずに次の行へ続けられます。
コメント
コメントはスクリプトの実行に影響を与えません。
※これはVisual Studioの画面です。
if文の構文
偽とは、条件式を評価した結果がFalse
if 条件式1:
条件式1が真(True)の場合に行う処理ブロック
elif 条件式2:
条件式1が偽(False)かつ条件式2が真(True)の場合に行う処理ブロック
elif 条件式3:
条件式1, 2が偽(False)で条件式3が真(True)の場合に行う処理ブロック
else:
すべての条件式が偽(False)の場合に行う処理ブロック
条件式のおよびelseの後ろの :(コロン) はブロックの始まりとして必ず書く必要があります。
elifは何個でも書くことができます。
VBAではElseIfと書きます。
条件式が真になりそのブロックが処理された後は、他の条件式を評価することなくif文は終了します。
全ての条件が偽で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()は組み込み関数で、数値を文字列に変換します。
+演算子は、文字列同士では文字列連結になります。
文字列に関しては、後々に詳しく解説します。
比較演算子
演算子 | 説明 |
== | 左辺と右辺が等しい |
!= | 左辺と右辺が等しくない |
> | 左辺が右辺より大きい |
>= | 左辺が右辺より大きい または 等しい |
< | 左辺が右辺より小さい |
<= | 左辺が右辺より小さい または 等しい |
is | 2つのオブジェクトが同一 |
is not | 2つのオブジェクトが同一ではない |
in | 左辺が右辺の要素に含まれている |
not in | 左辺が右辺の要素に含まれていない |
2つのオブジェクトの単純な値比較には、==から<=までを使います。
True(真)のとき、if文なら当該条件式のブロックが処理されます。
==とisの違い
isは、オブジェクトが同一かを判定します。
int型やfloat型でisを使用すると、意図に反した結果になる場合があります。
値の比較においては==を使いisは使用しない事です。
is None
この場合くらいになります。
Noneについて
他の言語ではnullと表現されるものと同じようなものになります。
これを判定する場合に、
is None
これを使います。
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)
論理演算子
演算子 | 説明 |
or | 論理和:どちらか一方がTrueであればTrue |
and | 論理積:両方がTrueの場合のみTrue |
not | 否定:FalseならTrue、TrueならFalse |
orもandも、結果が確定した時点で返されます。
つまり、左辺だけで結果が確定(orなら左辺がTrue、andなら左辺がFalse)する場合は、右辺は評価されません。
orは、左辺の評価結果がTrueなら左辺を返し、それ以外の場合は右辺を返します。
andは、左辺の評価結果がFalseなら左辺を返し、それ以外の場合は右辺を返します。
複数の比較演算の連結
a > b > c
このように比較演算を連結させて記述することができます。
これは、
a > b and b > c
これと等価になります。
真の判定、偽の判定
偽となるオブジェクト
・None
・数値の0(0.0や0jも)
・空オブジェクト(空の文字列、空のリスト・タプル・辞書等)
上記以外は、すべて真と評価されます。
メソッド__bool__()がFalseを返す場合や、
__bool__()が未定義で__len__()が0を返す場合も偽となります。
ただし、この入門の時点では考慮する必要が無いものです。
pass文
Pythonではインデントでブロックを定義する為、空のブロックを定義することができません。
しかし、どうしてもそこにブロックが必要となる場合もでてきます。
このような場合に、pass文を使います。
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 ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(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)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。