・macOS Big Sur
・Python3.8
文(単純文と複合文)
1行で表現される命令を「単純文」といい、複数行で表現される命令を「複合文」といいます。
Pythonにおける複合文は、キーワードを含みコロン(:)で終わる行(「ヘッダー」といいます。)と、その下のインデントされた部分(「スイート」といいます。)で構成されています。
ヘッダーとスイートを合わせて「節」と呼び、複合文は1つ以上の節を含みます。
ヘッダーがスイートを制御しており、ヘッダーに対するスイートのブロックはインデントによって指定されます。インデントは半角スペース4文字です。
# 単純文の例。
>> print('Hello world!')
# 複合文の例。
>>> for i in range(5): # ヘッダー
... print(i) # スイート
# 「>>>」を「プライマリプロンプト」、「...」を「セカンダリプロンプト」といいます。
条件分岐
if文
「if文」を使用することで条件分岐(特定の条件に従って処理を行うこと。)を実行できます。if文は次のように定義します。
if 条件式:
処理ブロック
Pythonで処理ブロック(スイート)を要求する場合は、一行目の最後にコロン(:)を付け、インデント(半角スペース4文字)で処理ブロックの範囲を明示します。
条件式には「ブール型(TrueかFalse)」、「比較演算子」、「論理演算子」を使います。条件式が「True」を返した時に処理ブロックが実行されます。
else文
If文の条件式が正しくない(False)時に実行する処理を「else文」で指定することができます。
if 条件式:
処理ブロック①
else:
処理ブロック②
条件式が成り立たなかった時に処理ブロック②が実行されます。
elif文
「elif文」(elifはelse ifの略)を使用することで、複数の条件を設定できます。
if 条件式①:
処理ブロック①
elif 条件式②:
処理ブロック②
条件式①が成り立つ時は処理ブロック①が、条件式②が成り立つ時は処理ブロック②が実行されます。
elif文が複数ある場合、上から順番に評価され、条件式が成り立った処理ブロックが実行されます。それ以降のelif文は評価もされません。
比較演算子
比較演算子(Relational Operator)による比較では、結果は「True(正しい)」または「False(正しくない)」が返されます。
比較演算子 | 表記例 | Trueを返す条件 |
== | x == y | xはyと等しい |
!= | x != y | xはyと異なる |
> | x > y | xはyより大きい |
< | x < y | xはyより小さい |
>= | x >= y | xはy以上 |
<= | x <= y | xはy以下 |
in | x in y | xはyに属する |
not in | x not in y | xはyに属さない |
is | x is y | xはyと参照先が等しい |
is not | x is not y | xはyと参照先が異なる |
比較演算子は数値の比較で多く用いられますが、文字列やコンテナを比較する場合にも使用できます。
型 | 比較演算子 | 取り扱い |
文字列 | ==, != | 文字列が完全に一致するか比較。 |
>, <, >=, <= | 文字列の文字コードの順番を1文字目から比較。 | |
in | 文字列の中に含まれているか検索。 | |
リスト、タプル(リストとタプルを比較することはできません。) | ==, != | 要素が順番を含め全て一致するか比較。 |
>, <, >=, <= | インデックス毎に対応した要素を比較し、全てが条件を満たすか比較。 | |
in | 要素に含まれているか検索。 ただし、複数の要素が含まれているかを調べることはできない。 [1,2] in [1, 2, 3, 4]はFalseになる。(リストの中のリストを検索できるようにするため。) |
|
辞書 | ==, != | 要素(キーと値のペア)が全て一致(順番は関係無し)するか比較。 |
>, <, >=, <= | 使用不可。 | |
in | キーに含まれているか検索。 ただし、複数のキーが含まれているかを調べることはできない。 |
|
集合 | ==, != | 順序は関係なく、要素が全て一致するか比較。 |
<, <= | 部分集合(集合A<集合Bの場合、集合Aの要素が全て集合Bに含まれている状態)か比較。 =があれば等しい場合もTrue。 |
|
>, >= | 上位集合(集合A>集合Bの場合、集合Aが集合Bの要素を全て含んでいる状態)か比較。 =があれば等しい場合もTrue。 |
|
in | 要素に含まれているか検索。 ただし、複数の要素が含まれているかを調べることはできない。 |
論理演算子
論理演算子(Logical Operator)を使用することで、より複雑な条件式を指定できます。
論理演算子 | 意味 | 表記例 | 表記例の意味 |
and | かつ | A == B and C == D | A=BかつC=Dのとき「True」 |
or | または | A == B or C == D | A=BまたはC=Dのとき「True」 |
not | 否定 | not A == B | A=Bのとき「False」 |
>>> a = True
>>> b = False
>>> c = True
>>> a and b and c
False
# 「a and b」の段階で結論はFalseとなるため、cは評価されません。
数値や文字列、コンテナ等にも論理演算子が使用できます。
数値では0がFalse、0以外がTrue。文字列では空文字がFalse、空文字以外がTrue。コンテナでは要素が空(長さが0)の場合にFalse、空以外がTrue。None(何もデータがない状態)はFalseとなります。なお、最後に評価された値が返されます。
>>> a = 0
>>> b = 1
>>> c = 2
>>> a and b and c # 論理演算子がandのみであり、aがFalseのため、結論はFalseとなり、評価終了。
0
>>> a or b or c # 論理演算子がorのみであり、「a or b」の段階で結論はTrueとなるため、評価終了。
1
>>> a and b or c # 「a and b」はFalseだが、「or c」によって結論はTrueとなる。
2
演算子の優先順位:
- 算術演算子
- 比較演算子
- 論理演算子(not、and、orの順で評価されます)
数値計算のように()で優先順位を変更することができます。
# if文のプログラム例
>>> a = 12
>>> if a > 15:
... print('aは15より大きい。')
... elif a > 10:
... print('aは15以下で10より大きい。')
... elif a == 10:
... print('aは10。')
... else:
... print('aは10より小さい。')
...
aは15以下で10より大きい。