概要

Pythonプログラミングの基礎である「データ型」について、特に初心者が混同しがちな「数値型」と「文字列型」の違いをテーマに解説します。
まず、それぞれのデータ型の基本的な役割(数値は計算、文字列は文字の表示・連結)をコード例と共に説明。レポートの核心部分では、同じ+記号でもデータ型によって「足し算」と「連結」という全く異なる動作になることを図解し、TypeErrorが発生する原因を明らかにします。
さらに、type()関数によるデータ型の確認方法や、int(), str()といった関数を用いた意図的な型変換(キャスト)の重要性も解説。ユーザー入力を扱う際の注意点など、実践的な知識も学べる内容です。
-
ゼロから始めるPython学習 STEP20目次
プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る
目次
はじめに
プログラミングの世界へようこそ!🐍 これまでのステップで、変数や基本的な命令について学んできましたね。今回は、プログラミングの根幹をなす非常に重要な概念、**「データ型」について深く掘り下げていきましょう。特に、最も基本的な「数値」と「文字列」**の違いを理解することは、今後の学習をスムーズに進めるための鍵となります。
データ型ってなんだろう? 🤔
コンピュータは、人間のように「"123"は数字だな」「"あいうえお"は言葉だな」と曖昧に判断することができません。コンピュータがデータを正しく扱うためには、そのデータが**「どんな種類のものか」を明確に教えてあげる必要があります。その「データの種類を示すラベル」がデータ型**です。
例えば、レストランで注文をするとき、「温かいお茶」と「冷たいお茶」では、店員さんの準備の仕方が全く異なりますよね。データ型もこれと同じで、「これは数値だから計算できるように準備しよう」「これは文字列だから文字として扱おう」と、コンピュータがデータの扱い方を決めるための重要な情報なのです。
Pythonには様々なデータ型がありますが、まず絶対に押さえておくべきなのが**「数値型」と「文字列型」**です。
graph LR; A(データ) --> B("数値型 (Numeric Types)"); A --> C("文字列型 (String)"); A --> D(その他のデータ型...); subgraph "数値の仲間" B --> B1("整数 (int)"); B --> B2("浮動小数点数 (float)"); end subgraph "文字の仲間" C --> C1("例: 'こんにちは'"); C --> C2("例: 'Hello World'"); C --> C3("例: '123'"); end
数値型 (Numeric Types): 計算するためのデータ
数値型は、その名の通り、計算を行うためのデータです。主に2つの種類があります。
- 整数 (integer /
int
):1
,100
,-50
,0
のような、小数点のつかない数字です。 - 浮動小数点数 (float):
3.14
,1.23
,-0.001
のような、小数点のつく数字です。
数値型の一番の特徴は、四則演算(足し算、引き算、掛け算、割り算)ができることです。
【コード例】
# 整数(int)の計算 a = 10 b = 5 print(a + b) # 足し算 print(a - b) # 引き算 # 浮動小数点数(float)の計算 c = 3.14 d = 2.0 print(c * d) # 掛け算 print(c / d) # 割り算
【実行結果】
15 5 6.28 1.57
このように、数値型データは数学の数字と同じように、自由に計算することができます。
graph LR; subgraph "数値の計算プロセス" direction LR num1(10) -- 四則演算 (+) --> num2(5); num2 -- 結果 (=) --> result(15); end
文字列型 (String / str
): 文字を扱うためのデータ
文字列型は、文字や文章を扱うためのデータです。「こんにちは」や「Python」のような言葉はもちろんのこと、実は'123'
のように数字であっても、シングルクォーテーション('
)またはダブルクォーテーション("
)で囲まれているものはすべて文字列として扱われます。これが非常に重要なポイントです。
【コード例】
message1 = 'こんにちは、Pythonの世界へ!' message2 = "Hello World" number_string = '123' # これは数値ではなく、文字列 print(message1) print(message2) print(number_string)
【実行結果】
こんにちは、Pythonの世界へ! Hello World 123
文字列型は、数値型とは異なる特殊な操作ができます。
- 連結:
+
演算子を使うと、文字列同士をつなげることができます。 - 繰り返し:
*
演算子を使うと、文字列を複数回繰り返すことができます。
【コード例】
greeting = 'こんにちは' name = '山田さん' # 文字列の連結 full_message = greeting + '、' + name print(full_message) # 文字列の繰り返し laugh = 'ha' * 3 print(laugh)
【実行結果】
こんにちは、山田さん hahaha
graph LR; subgraph "文字列の連結プロセス" str1("こんにちは") -- 連結 (+) --> str2("山田さん"); str2 -- 結果 (=) --> result("こんにちは山田さん"); end
【最重要】数値と文字列の決定的な違い
ここが今回の核心です。数値の123
と文字列の'123'
は、人間には同じに見えても、Pythonにとっては全くの別物です。
最大の違いは、計算できるかどうかです。
- 数値の
+
は「足し算」 - 文字列の
+
は「連結」
この違いが、予期せぬエラーの大きな原因になります。
graph TD; A("「+」演算子") --> B{"データ型をチェック"}; B --> C["数値型 (int, float)"]; B --> D["文字列型 (str)"]; B --> E["違う型同士?"]; subgraph "数値の場合" C -- "足し算を実行" --> C_Result("例: 10 + 5 => 15"); end subgraph "文字列の場合" D -- "連結を実行" --> D_Result("例: '10' + '5' => '105'"); end subgraph "型が混在している場合" E -- "エラー発生!" --> E_Result("TypeError: 計算も連結もできません"); end
実際にコードで見てみましょう。
【コード例】
# 数値同士の足し算 num1 = 10 num2 = 5 print(num1 + num2) # 文字列同士の連結 str1 = '10' str2 = '5' print(str1 + str2)
【実行結果】
15 105
衝撃の結果ですね! 10 + 5
は 15
ですが、 '10' + '5'
は '10'
という文字と '5'
という文字をつなげた '105'
という全く別の文字列になるのです。
さらに、数値と文字列を直接 +
で計算しようとすると、エラーが発生します。
【エラーが発生するコード例】
num_value = 100 str_value = '円' # 数値と文字列を直接足そうとすると... print(num_value + str_value)
【実行結果】
TypeError: unsupported operand type(s) for +: 'int' and 'str'
この TypeError
は、「int
(整数)と str
(文字列)を +
で計算することはできません!」というPythonからの悲鳴です。コンピュータは、「足し算をすればいいのか?文字を連結すればいいのか?わからないよ!」と混乱してしまうのです。
データ型の確認と変換
では、あるデータがどの型なのかを知りたいときや、型を意図的に変えたいときはどうすればいいのでしょうか?
データ型の確認: type()
関数
type()
関数を使うと、変数やデータの型を簡単に調べることができます。
【コード例】
print(type(123)) print(type(3.14)) print(type('こんにちは')) print(type('123'))
【実行結果】
<class 'int'> <class 'float'> <class 'str'> <class 'str'>
データ型の変換(キャスト)
型が違うことによるエラーを避けるために、Pythonにはデータ型を変換する機能が用意されています。これをキャストと呼びます。
str()
: 数値を文字列に変換するint()
: 文字列や浮動小数点数を整数に変換するfloat()
: 文字列や整数を浮動小数点数に変換する
graph LR; subgraph "型変換(キャスト)" A["'200'"(str)] -- int() --> B[200 (int)]; C[100(int)] -- str() --> D["'100'"(str)]; E["'3.14'" (str)] -- float() --> F[3.14(float)]; end
先ほどエラーになった「100円」と表示する例も、型変換を使えば正しく実行できます。
【コード例】
num_value = 100 unit_str = '円' # num_valueをstr()で文字列に変換してから連結する result_message = str(num_value) + unit_str print(result_message)
【実行結果】
100円
特に、ユーザーからのキーボード入力を受け取る input()
関数は、入力されたものが数字であっても、必ず文字列型として扱います。そのため、入力された数値で計算したい場合は、int()
や float()
を使った型変換が必須になります。
【コード例】
# input()で受け取ったデータは必ず文字列型 price_str = input('商品の価格を入力してください: ') quantity_str = input('数量を入力してください: ') # 文字列のまま計算しようとすると...? # print(price_str * quantity_str) # これはエラーになる # int()で数値に変換してから計算する price_int = int(price_str) quantity_int = int(quantity_str) total_price = price_int * quantity_int print('合計金額は' + str(total_price) + '円です。')
まとめ
今回は、プログラミングの基礎である「データ型」、特に「数値」と「文字列」の違いについて学びました。
- データ型は、データの種類を示すラベルであり、コンピュータのデータ処理方法を決定する。
- 数値型 (
int
,float
) は計算するためのデータ。 - 文字列型 (
str
) は文字を扱うためのデータで、'
か"
で囲む。 - 見た目が同じ数字でも、
123
(数値)と'123'
(文字列)は全くの別物。 +
演算子は、相手のデータ型によって「足し算」になったり「連結」になったりする。- 違うデータ型同士(特に数値と文字列)を
+
で計算しようとするとTypeError
が発生する。 type()
関数でデータ型を確認できる。int()
,str()
,float()
を使ってデータ型を意図的に変換(キャスト)できる。
このデータ型の違いをしっかり意識することが、バグの少ない、意図した通りに動くプログラムを書くための第一歩です。お疲れ様でした!✨
-
ゼロから始めるPython学習 STEP20目次
プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る