この章では、真偽値と比較するときに使用する演算子と「何もない」を表現するNoneについて学んでいきます
真偽値について
真偽値とは真(True)または偽(False)という2種類の値だけをとる型です
真理値やbool型とも呼ばれます
真は「はい」、「イエス」、「条件の成立」などを表す値でTrueと書きます
偽は「いいえ」、「ノー」、「条件の不成立」などを表す値でFalseと書きます
print(type(True))
print(type(False))
t = int(True)
f = int(False)
print(t)
print(f)
実行結果
<class 'bool'>
<class 'bool'>
1
0
True、Falseはbool型であることが確認できます
一方、True、Falseをint型に変換するとTrueは1、Falseは0と等しいことがわかります
【演習問題】
1.変数t,fにTrue、Falseをそれぞれ代入し、tとfの値および型を表示してみてください
実行結果
True
<class 'bool'>
False
<class 'bool'>
2.変数t,fにTrue、Falseをそれぞれ代入し、tをint型へ、fをfloat型に変換し変換後の値と型を表示してみてください
1
<class 'int'>
0.0
<class 'float'>
比較演算子
比較演算子とは、「等しい」、「等しくない」、「大きい」、「小さい」といった比較演算を行うために利用する記号のことを言い、比較演算の結果は真偽値になります
比較演算子を一覧で示します
演算子 | 使い方 | 結果がTrueになる条件 |
== | A == B | AがBに等しい |
!= | A != B | AがBに等しくない |
< | A < B | AがBよりも小さい |
> | A > B | AがBよりも大きい |
<= | A <= B | AがB以下(AがBよりも小さいか等しい) |
>= | A >= B | AがB以下(AがBよりも小さいか等しい) |
【演習問題】
上記のサンプルを実際に試してみましょう
論理(ブール)演算子
複数の比較演算を組み合わせて複雑な条件を記述したいときに論理(ブール)演算子を使います
論理演算子を一覧で示します
演算子 | 使い方 | 結果がTrueになる条件 |
and | A and B | AとBの両方がTrueのとき |
or | A or B | AまたはBがTrue(両方がTrueでもよい)のとき |
not | not A | AがTrueではないとき |
a > 10 and a < 13 は比較演算子を並べて以下のように記述することもできます
or演算を実行してみましょう
not演算子は以下のように使用します
一方以下のように記述すると結果が異なります
括弧をつけると括弧を優先して計算しますが、括弧をつけない場合、and,or,notの計算の優先順位が、not > and > orとなっているため、先に「not a1」の計算が実行され、そのあと「and b1」が実行されるため、結果が異なってきます
条件が複雑になってくると、括弧を使わないとうまく判定できない場合も発生しますので、正しい結果が得られないときは、括弧に注意して条件を作成してみてください
【演習問題】
- 上のサンプルを実行してみましょう
- 変数numに4を代入し、numの値が1以上6以下であるか判定する条件式を書いてみましょう
「何もない」ことを表す
Pythonには、「何もないこと」または「値が存在しないこと」を表現するための特殊な定数であるNoneが存在します
たとえば、以下のサンプルプログラムのように、str2には、str2 = Noneと書くことで、値がないことを明示的に設定します
変数を宣言したものの、まだ具体的な値を代入したくない場合に、初期値としてNoneを設定することがあります
str1 = ""
str2 = None
print("=str1=")
print(str1)
print(type(str1))
print("=str2=")
print(str2)
print(type(str2))
実行結果
=str1=
<class 'str'>
=str2=
None
<class 'NoneType'>
str1は空文字が代入されているため空文字が出力され、str2はNoneと出力されます
また、Noneは特殊な型「NoneType」という独自のデータ型を持っています
Noneかどうかを、==や!=演算子を使用して比較することができます
しかし、Pythonのコーディング規約では isというキーワードを使うことが推奨されています
not演算子を使い以下のように記述することもできます
【演習問題】
上のサンプルを実行してみましょう
文字列の比較
文字列を比較する方法は以下の4種類が存在します
1.完全一致
与えられた文字列が完全に一致するかどうかを比較するときに使用します
完全一致の場合、比較演算子の==、!=を使用して判定します
このサンプルプログラムのように文字列の比較は、大文字と小文字は区別します
また、完全一致からは脱線しますが、大小の比較をすることもできます
比較の際は、辞書順により文字列を比較します
2.部分一致
与えられた文字列の中に特定の文字列が含まれているかどうかを判定するときに使用します
in 、 not inというキーワードを使用して、以下のように記述します
3.前方一致
与えられた文字列の文頭が、特定の文字列であるかどうかを判定するときに使用します
startswith()関数を使用し、以下のように記述します
文字列.startswith(接頭辞の文字列) # 文字列が接頭辞の文字列から始まっているときTrue
サンプルプログラムを以下に示します
4.後方一致
与えられた文字列の末尾が、特定の文字列であるかどうかを判定するときに使用します
endswith()関数を使用し、以下のように記述します
文字列.endswith(接尾辞の文字列) # 文字列が接尾辞の文字列で終わっているときTrue
サンプルプログラムを以下に示します
【演習問題】
- 上のサンプルを実行してみましょう
- 変数str1に”Python”を代入し、接頭辞が”py”でもTrueになるように記述してみましょう
- 変数str2に”image.jpg”を代入し、拡張子がjpgであることを判断するプログラムを作成してみましょう
- 変数str2に”image.jpg”を代入し、インデックスの5番目がピリオドであることを判断するプログラムを作成してみましょう
コメント