Pythonのデータ型の見分け方!int・float・str・boolをtype()で確認|Python基礎講座 第2回
前回:Pythonの変数とは?名前の付け方と代入の順番を実行して確かめる|Python基礎講座 第1回
「画面には同じ 3 と表示されているのに、計算するとエラーになる…」「int とか str とか、結局なにが違うの?」
こんなふうに戸惑ったこと、ありますよね。この記事は、Pythonの基本を1テーマずつ押さえる連載「Python基礎講座」の第2回です。今回はデータ型の見分け方として、int・float・str・bool の4つと、型を調べる type() を取り上げます。
対象はPythonを始めたばかりの初心者の方で、難易度は入門レベルです。変数に値を代入できれば読み進められます。動作確認は Python 3.13 で行いました。一緒に見ていきましょう! 😊
データ型とは?値の「種類」のこと

データ型(型)とは、その値がどんな種類のデータなのかを表すものです。
イメージとしては、カレンダーに書いた「3」です。「3日」なのか「3時」なのか「会議室3」なのかで、できることが変わりますよね。「3日」と「4日」は足し算できますが、「会議室3」に1を足しても意味がありません。
Pythonも同じで、値の種類によってできる操作と結果が変わります。まずは、よく使う4つの型を押さえましょう。
| 型 | 読み方・意味 | 書き方の例 | 見分けるポイント |
|---|---|---|---|
int |
整数(integer) | 3、-20、1_000 |
小数点がない数 |
float |
小数(浮動小数点数) | 3.0、0.5 |
小数点がある数 |
str |
文字列(string) | "3"、'札幌' |
" " か ' ' で囲まれている |
bool |
真偽値(ブール) | True、False |
先頭が大文字の True / False の2つだけ |
サンプル1:type() で型を調べる
見た目が似ている4つの値を用意して、print() と type() で表示してみます。
# 見た目が似ている4つの値
cups = 3
weight = 3.0
room = "3"
is_open = True
print(cups, weight, room, is_open)
# type() で「何の種類(型)か」を調べる
print(type(cups))
print(type(weight))
print(type(room))
print(type(is_open))
実行結果はこうなりました。
3 3.0 3 True
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
ここが重要です👇
- 1行目を見ると、
cups(3)とroom("3")はどちらも同じ3と表示されています。print()だけでは区別できません type()を使うと<class 'int'>や<class 'str'>のように、型の名前がわかります。classの部分は今は気にせず、' 'の中の名前だけ読めばOKです3と3.0は数としては同じ大きさですが、型はintとfloatで別物です
サンプル2:同じ「+」でも型で結果が変わる
型がちがうと、何が変わるのでしょうか。これ、実行せずに答えられますか? 4行それぞれ何が表示されるか、予想してから読み進めてみてください。
# 同じ「+」でも、型によって結果が変わる
print(3 + 4) # int + int
print(3.0 + 4) # float + int
print("3" + "4") # str + str
print(True + True) # bool + bool ← 何が出るか予想してみよう

実行結果はこちらです。
7
7.0
34
2
ポイントをまとめるとこんな感じです👇
3 + 4は整数どうしなので7(int)3.0 + 4は片方が float なので、結果も7.0(float)になります"3" + "4"は文字列どうしなので、足し算ではなくつなげる動きになり34です。電卓ではなく「文字を並べる」と考えるとわかりやすいですTrue + Trueは、意外にも2でした。PythonではTrueを1、Falseを0として計算できるためです。ふだんの計算で使うことはほとんどないので、「そういう仕組みもある」くらいで大丈夫です
同じ + という記号でも、型によって「計算」になったり「連結」になったりする。これが型を意識する理由です。
サンプル3:型ちがいで起きるエラーを読む
実際によくあるのが、数のつもりで扱っていた値が、じつは文字列だったというケースです。申込フォームから受け取った年齢で、来年の年齢を計算してみます。
# 申込フォームから受け取った年齢(のつもり)
age = "25"
# 来年の年齢を計算したい
next_age = age + 1
print(next_age)
実行すると、エラーで止まりました(ファイルの場所は環境によって変わるので …\ と省略しています)。
Traceback (most recent call last):
File "…\s3_error.py", line 5, in <module>
next_age = age + 1
~~~~^~~
TypeError: can only concatenate str (not "int") to str
最後の行の TypeError: can only concatenate str (not "int") to str は、「str には str しかつなげられません(int はつなげません)」という意味です。age が文字列 "25" なので、+ は連結のつもりで動こうとして、相手の 1 が int だったため止まったわけです。
こういうときは、あやしい変数の値と型を一緒に表示して確かめます。
age = "25"
# 値と型を一緒に表示して確かめる
print(age, type(age))
print(repr(age))

25 <class 'str'>
'25'
print(age, type(age))で、値が25、型がstrだとひと目でわかりますrepr()を使うと'25'のようにクォート付きで表示されるので、文字列だと気づきやすくなります
今回は age = 25 と " " を外して書き直すと、26 <class 'int'> と表示されました。ただ、フォームやキーボード入力から受け取る値は文字列になることが多く、書き直せない場面もあります。そのときに使う int() や str() による型変換は、次回の第3回で詳しく扱います。
見分けるときに迷いやすい3つのポイント
最後に、実際に試して「おっ」と思った点をまとめます。
- 割り算
/の結果は float:10 / 2は割り切れても5.0と表示され、type()はfloatでした。整数になると思っていると、表示に.0が付いて驚きます "True"は bool ではなく str:type("True")は<class 'str'>でした。" "で囲んだ時点で文字列です- 小文字の
trueはエラー:is_member = trueと書くとNameError: name 'true' is not defined. Did you mean: 'True'?が出ました。JavaScriptなどに慣れている方はうっかり書きがちです ⚠️
ちなみに、1_000 のように _ で桁を区切って書いた数は int、1e3(1×10の3乗)と書いた数は 1000.0 の float になりました。書き方で型が決まる、という点は同じです。
まとめ
- データ型は値の種類。よく使うのは
int(整数)・float(小数)・str(文字列)・bool(True / False) print()では3と"3"が同じに見える。type()で型を確かめる- 同じ
+でも、数なら計算、文字列なら連結になる TypeErrorが出たら、print(変数, type(変数))で値と型を一緒に表示する/の結果は float、"True"は str、小文字のtrueは NameError
次回の第3回は、int()・str()・float() を使った型変換を取り上げます。「むずかしそう」を「できそう」に変えていきましょう。サンプル2の値をいろいろ変えて、どんな型の結果になるか、ぜひ試してみてください! 🚀
\ 読んだら、次は自分で作ってみよう /
筆者が運営する無料の入門コース「作って学ぶPythonプログラミング入門」では、こうした基本文法を、割り勘計算機・おみくじ・数当てゲームなどを作りながら身につけます。各章末の定着ドリル(全42問)で、自分の手で書く練習まで。最初の4レッスンは登録なしで読めます。
こちらも読まれています
📚 関連商品・おすすめ書籍
※本記事にはアフィリエイトリンクが含まれます。




