型について学ぶ
変数とは、メモリにつけられた「ラベル」のことでした。
メモリには値を保存できますが、実際には整数で、プログラムでは小数点を含む数や文字列なども表現できる必要があります。
メモリに保存された値を「どのように解釈するか」を指定する必要があります。これを型と表現します。
当たり前のようですが、42という整数が代入された変数は「整数」の型を持っていると言えます。Pythonで変数の型を調べたい時は、以下のようにすると確認できます。
a = 42
print(type(a)) # intと出力されます
小数点を含む数値は浮動小数点数(float型)になります。
b = 1.3
print(type(b)) # floatと出力されます
Pythonでは、文字列を表現する時は、ダブルクォーテーション" "
、または、シングルクォーテーションマーク' '
で文字を囲みます。
c = "test"
print(type(c)) # strと出力されます
もう少しだけ踏み込む
整数や浮動小数点数は四則演算ができます。また、同じ型同士の演算の場合はその型になります。
print(type(1 + 2)) # intと出力されます
print(type(1.0 + 2.0)) # floatと出力されます
Pythonでは整数同士の割り算は、割り切れる場合でも値は浮動小数点数になります。
print(2 / 1) # 2.0と出力されます
割り算のあまりを切り捨て整数値を計算したい場合は、//
を使うと計算できます。
print(3//2) # 1と出力されます
整数型と浮動小数点数型の演算結果は浮動小数点数型になります。
print(1+1.0) # 2.0と出力されます
文字列同士の足し算は、文字列を繋ぐ、結合のような処理になります。
"Hello " + "World!" # 'Hello World!'と出力されます
文字列と数値は足し算などはできません。
"1" + 2 # Type Errorが出力されます
int
やfloat
で囲むと文字列から整数や浮動小数点数に変換(キャスト)できるので、演算も可能になります。
print(int("1") + 2) # 3と出力されます
真偽値(bool)とは
「真(True)」「偽(False)」の二値を取る型です。正しい(真)、正しくない(偽)かを表現し、条件分岐などで使われます。
値を比較すると真偽値になります。
条件分岐や、ループを終了する際の条件等に用いられます。
== は、左辺と右辺で値が等しいかを真偽値で返します。
print(1 == 1) # Trueと出力されます
print(1 == 2) # Falseと出力されます
!= は、左辺と右辺で値が等しくないかを真偽値で返します。
print(1 != 1) # Falseと出力されます
print(1 != 2) # Trueと出力されます
a > bは、aはbより大きいか、a < bは、aはbよりも小さかを真偽値で返します。
print(1 < 2) # Trueと出力されます
print(2 < 2) # Falseと出力されます
print(3 < 2) # Falseと出力されます
print(1 > 2) # Falseと出力されます
print(2 > 2) # Falseと出力されます
print(3 > 2) # Trueと出力されます
a >= bは、aはb以上か、a <= bは、aはb以下かを真偽値で返します。
print(1 <= 2) # Trueと出力されます
print(2 <= 2) # Trueと出力されます
print(3 <= 2) # Falseと出力されます
print(1 >= 2) # Falseと出力されます
print(2 >= 2) # Trueと出力されます
print(3 >= 2) # Trueと出力されます
このように=が付くかどうかで、その数を含むかどうかが変わることが確認できました。(より大きい、以上という言葉の表現の違い)
文字列の比較もできます。
print('hello' == 'hello') # Trueと出力されます
not
をつけると真偽値が反転します。
print(not True) # Falseと出力されます
print(not 1==2) # Trueと出力されます
論理演算
二つの真偽値を使い、and
(かつ)、or
(または)という論理演算ができます。
print(False and False) # Falseと出力されます
print(False and True) # Falseと出力されます
print(True and False) # Falseと出力されます
print(True and True) # Trueと出力されます
print(False or False) # Falseと出力されます
print(False or True) # Trueと出力されます
print(True or False) # Trueと出力されます
print(True or True) # Trueと出力されます
浮動小数点数とは
「0.1」「-12.345」などの、整数ではない小数点がある値です。四則演算や比較、負の数も扱えます。
print(0.1 + 0.1) # 0.2と出力されます
print(0.5 < 1.0) # Trueと出力されます
期待する内容と異なる挙動になる不具合として、浮動小数点数の比較などは信頼できないので注意が必要です。
それは以下のように、Pythonでは内部的に、その数値に最も近い近似値を扱っているためです。
print(0.1 + 0.1 + 0.1) # 0.30000000000000004と出力されます
print(0.1 + 0.1 == 0.2) # Trueと出力されます
print(0.1 + 0.1 == 0.3) # Falseと出力されます