前回:Pythonの変数とは?名前の付け方と代入の順番を実行して確かめる|Python基礎講座 第1回

「画面には同じ 3 と表示されているのに、計算するとエラーになる…」「int とか str とか、結局なにが違うの?」

こんなふうに戸惑ったこと、ありますよね。この記事は、Pythonの基本を1テーマずつ押さえる連載「Python基礎講座」の第2回です。今回はデータ型の見分け方として、int・float・str・bool の4つと、型を調べる type() を取り上げます。

対象はPythonを始めたばかりの初心者の方で、難易度は入門レベルです。変数に値を代入できれば読み進められます。動作確認は Python 3.13 で行いました。一緒に見ていきましょう! 😊

データ型とは?値の「種類」のこと

calendar numbers
calendar numbers / Photo by Rene Terp via Pexels

データ型(型)とは、その値がどんな種類のデータなのかを表すものです。

イメージとしては、カレンダーに書いた「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 ← 何が出るか予想してみよう
サンプル2の実行結果:同じ+でも型で結果が変わる
サンプル2の実行結果:同じ+でも型で結果が変わる

実行結果はこちらです。

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))
サンプル3の実行結果:値と型を一緒に表示して確かめる
サンプル3の実行結果:値と型を一緒に表示して確かめる
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レッスンは登録なしで読めます。

→ 無料の入門コース(全7章52レッスン)を見てみる

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る
徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る
実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。