Python

Pythonで学ぶ 型

型について学ぶ

変数とは、メモリにつけられた「ラベル」のことでした。

メモリには値を保存できますが、実際には整数で、プログラムでは小数点を含む数や文字列なども表現できる必要があります。

メモリに保存された値を「どのように解釈するか」を指定する必要があります。これを型と表現します。

当たり前のようですが、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が出力されます

intfloatで囲むと文字列から整数や浮動小数点数に変換(キャスト)できるので、演算も可能になります。

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と出力されます