【Python連載】データ型と型変換


今回は、Pythonのデータ型と型変換について扱っていきます。


データ型

以前の記事で変数について説明をした際、
「一般的なプログラミング言語では、変数を扱う際にデータ型と呼ばれる、中に格納するデータの種類を指定し、
変数を宣言します。ですが、Pythonではデータ型の指定や変数の宣言といった作業は必要ありません。」
という説明をしました。

データ型とは、プログラム上で扱われる様々なデータの種類を指し示すためのラベリングです。
例えば、1,2,-1などは整数型、”Python”,”Hello”などの文字列は文字列型、と一般的に定義されています。

Pythonでも同様に、Python上で扱うデータをデータ型でラベリングしています。
よく利用されるデータ型を以下に挙げておきます。

データ型 説明
int型 整数 小数点を含まない、0や正の数、負の数 0、1、-1
float型 小数点 小数点を含む数値 0.0や負の数も含む 1.1、0.0、-1.5
str型 文字列 数値、記号などもstr型として代入された
場合は文字列として扱う
“Python”、”12345”
bool型 真偽値 TrueもしくはFalse True、False
list型 複数の要素を含む。[]を使って定義し、
カンマで各要素を区切る
[‘Python’, 123, True]
tuple型 複数の要素を含む。()を使って定義し、
カンマで各要素を区切る。
リストと違い各要素があとから変更できない
(‘Python’, 123, True)
dict型 辞書型 複数の要素を含む。{}を使って定義し、
各要素はキーと値の組み合わせからなる
{‘key1′:’Python’, ‘key2’:123, ‘key3’:True}

list型、tuple型、dict型については、後日の記事で詳しく扱う予定です。

今回は、int型、str型、bool型について例を見てみましょう。
例を見ていく際に扱う関数として、type関数があります。
type関数は、変数や値のデータ型を調べる事ができる関数になります。

type(調べたい値、変数など)

では、type関数を用いてそれぞれのデータ型について確認していきましょう。

・int型
整数の値を扱うデータ型になります。整数、つまり
「0、10、100、-10」などの小数点を含まない正負の数を意味します。

num = 10
print(type(num))
C:\Python> python 2-7.py
<class ‘int’>

<class ‘int’> というtype関数の結果を確認することで、
10という整数値を代入した変数numのデータ型がint型であることがわかります。

・str型
文字列を扱うデータ型になります。str型として変数に代入した
文字、記号、数字などは全て文字列として扱われます。
str型として値を変数に代入する際は、ダブルクォートもしくはシングルクォートで
文字列を囲みます。

word = "Python"
print(type(word))
C:\Python> python 2-7.py
<class ‘str’>

<class ‘str’> という結果から、str型であることがわかります。
上で説明したとおり、数字を代入した場合も、ダブルクォートもしくはシングルクォートで
囲んで代入すると文字列、つまりstr型として扱われます。

word = "123"
print(type(word))
C:\Python> python 2-7.py
<class ‘str’>

適当な数字をダブルクォートで囲んで代入しました。
type関数の結果から、str型になっていることがわかります。

・bool型
TrueとFalse、つまり真偽値を扱うデータ型です。
TrueとFalseは前回扱った比較演算子や論理演算子の結果としてよく用いられます。
また、条件を判定した結果がTrueかFalseなのかによって
処理を分岐させる、if文などの条件分岐で使われています。

x = True
print(type(x))
C:\Python> python 2-7.py
<class ‘bool’>

<class ‘bool’> という結果から、bool型であることがわかります。
bool型の変数を扱う際は、TrueもしくはFalseをダブルクォートなどで囲まずに代入します。

また、以下のように演算子を使った計算の結果がbool型であることも確認できます。

x = 10
y = 20
print(x == y)
print(type(x == y))
C:\Python> python 2-7.py
False
<class ‘bool’>

型変換

例えば、数値の計算をする際に、以下のようにint型の変数とstr型の変数が
混在している場合、エラーになります。

x = 10
y = "10"
print(x + y)
C:\Python> python 2-7.py
Traceback (most recent call last):
  File “.\2-7.py”, line 3, in
    print(x + y)
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’

str型では数値をあくまで文字列として扱うため、そのままでは
int型の整数値と計算することは出来ません。
こういった場合は、文字列型の数値をint型に型変換することで計算できるようになります。
整数値に変換する場合は、int関数を使います。

x = 10
y = "10"
print(x + int(y))
C:\Python> python 2-7.py
20

str型だった変数yをint型に変換した上で計算しています。
同様に、str型への変換ではstr関数を使います。
例えば、以下のようにint型の値を文字列と連結しようとしてもデータ型が異なるためエラーになります。

val = 1000 * 2
word = "合計金額は" + val + "円です。"
C:\Python> python 2-7.py
Traceback (most recent call last):
  File “.\2-7.py”, line 2, in
    word = “合計金額は” + val + “円です。”
TypeError: can only concatenate str (not “int”) to str

この場合、文字列とint型の変数を連結して変数wordに代入した時点でエラーになっています。
こちらも、str型でint型の整数値を文字列に変換した上で連結してみましょう。

val = 1000 * 2
word = "合計金額は" + str(val) + "円です。"
print(word)
C:\Python> python 2-7.py
合計金額は2000円です。

このように、int型の変数をstr型に変換した上で、文字列と連結することが出来ました。
str関数は、int型だけでなくbool型などもstr型に変換することが出来ます。

x = True
word = "結果は" + str(x) + "です。"
print(word)
C:\Python> python 2-7.py
結果はTrueです。

まとめ

Pythonで扱うデータ型には、int型、str型、bool型などいくつかの種類があります。
変数や値のデータ型は、type関数で確認することが出来ます。
また、データ型はint関数str関数などを用いて変換する事ができます。


確認問題

1.変数に文字列や数字を代入し、そのデータ型をtype関数で確認してみましょう。

2.整数値を代入した変数を、str型に変換してみましょう。
また、整数値を文字列として変数に代入し、その値をint関数で変換してみましょう。

  • このエントリーをはてなブックマークに追加

PAGE TOP