Python

【Python】型の変換【キャスト】

この記事では、Pythonでオブジェクトの型を任意の型に変換する方法を解説します。型を変換することで文字列を演算に使ったりすることができます。また、型を変換することを「キャスト」と言ったりします。

型変換するには

Pythonで型を変換するには、型のコンストラクタを使います。型のコンストラクタに型を変換したいオブジェクトを指定することで型を変換することができます。

例えば、文字列に変換するにはstr()を使い、整数に変換するにはint()を使います。

型の変換と言っていますが、厳密にはコンストラクタに指定された値から新たにその型のオブジェクトを生成しているに過ぎません。

型変換してみる

実際に型を変換してみましょう❗️

文字列に変換

文字列型に変換するには、str()を使います。以下のコードでは、「整数型」のオブジェクトを「文字列型」に変換しています。

i = 1
print(type(i))
>> <class 'int'>

# 変換
s = str(i)
print(type(s))
>> <class 'str'>

整数(int)型に変換する

整数型に変換するには、int()を使います。以下のコードでは、「文字列型」のオブジェクトを「整数型」に変換しています。

s = '1'
print(type(s))
>> <class 'str'>

# 変換
i = int(s)
print(type(i))
>> <class 'int'>

もちろん、変換できない場合もあります。その場合は、ValueErrorが発生します。

s = 'one'

# 変換できない
i = int(s)
>> ValueError: invalid literal for int() with base 10: 'one'

また、float(浮動小数点数)型を変換する場合は、小数点以下は切り捨てられます。

f = 3.14
i = int(f)
print(i)
>> 3

f = 0.99
i = int(f)
print(i)
>> 0

浮動小数点数(float)型に変換する

浮動小数点数型に変換するには、float()を使います。以下のコードでは、「文字列型」のオブジェクトを「浮動小数点数型」に変換しています。

s = '3.14'
print(type(s))
>> <class 'str'>

f = float(s)
print(type(f))
>> <class 'float'>

変換できない場合は、整数型と同様にValueErrorが発生します。

s = 'one'

# 変換不可
f = float(s)
>> ValueError: could not convert string to float: 'one'

真偽値(bool)型に変換する

bool型に変換するには、bool()を使います。以下のコードでは、「整数型」から「bool型」のオブジェクトを生成してみます。

i = 0
b = bool(i)
print(b)
>> False

i = 1
b = bool(i)
print(b)
>> True

int や float などの数値型では、0がFalse、それ以外がTrueとして変換されます。文字列や配列は、空ならばFalse、空でなければTrueが生成されます。

空の場合

st = ''
l = []
t = ()
d = {}
s = set()

print(bool(st))  # False
print(bool(l))   # False
print(bool(t))   # False
print(bool(d))   # False
print(bool(s))   # False

空でない場合

st = 'Hello'
l = [1, 2, 3]
t = ('a', 'b', 'c')
d = {'a': 1, 'b': 2, 'c': 3}
s = {9, 8, 7}

print(bool(st))  # True
print(bool(l))   # True
print(bool(t))   # True
print(bool(d))   # True
print(bool(s))   # True

型変換できない場合

型は必ず変換できるとは限りません。なので、型変換できなかった場合の処理が必要となります。例えば、例外処理を使って以下のように記述します。

s = 'one'

# 例外処理
try:
    # エラーが起きそうな処理
    i = int(s)
except:
    # tryブロック内でエラーが起きた場合の処理
    print('型変換に失敗しました。')
>> 型変換に失敗しました。

無限ループと組み合わせることで、input関数で整数に変換できる値を受け取るまでループしたりできる。

# 無限ループ
while True:

    # 例外処理
    try:
        # input関数で受け取った値をintに変換
        i = int(input('整数: '))
        # エラーが発生しなければbreakが処理される
        break
    except:
        # tryブロック内でエラーが起きたら処理される
        print('整数を入力してください')
最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』