💡 この記事でわかること
- データ型とは何か、なぜ意識する必要があるのか
- 文字列(str)・整数(int)・小数(float)・真偽値(bool)の違い
- type()関数で値の型を調べる方法
- int()・str()・float()による型変換(キャスト)
- input()の値が文字列になる注意点と、f文字列の使い方
1. データ型とは?
データ型とは、
👉 プログラムが扱う値の「種類」のことです。「文字列」「整数」「小数」「真偽値」などの種類があり、種類によってできる操作が変わります。
💡 Pythonでは変数を作るときに型を宣言しませんが、値そのものには必ず型があります。例えば同じ+でも、数値同士なら足し算、文字列同士なら連結、というように型によって動きが違います。
1 + 2 # 3(数値の足し算)
"1" + "2" # "12"(文字列の連結)変数の基本的な作り方をまだ確認していない場合は、先にこちらを読んでおくとスムーズです。
👉 Pythonの基本文法(print・変数・インデント)についての記事はこちら
2. 文字列型(str)
文字列は、文字の並びを表す型です。シングルクォート'かダブルクォート"で囲みます。どちらを使っても同じです。
name = "太郎"
greeting = 'こんにちは'
print(name + "さん") # 太郎さん(連結)
print("=" * 10) # ==========(繰り返し)
print(len(name)) # 2(文字数)👉 +で連結、*で繰り返し、len()で文字数を取得できます。数字であっても、クォートで囲めば文字列として扱われます("100"は数値の100ではありません)。
3. 数値型(int・float)
数値には2つの型があります。
- int(整数型):
10、-3、0など、小数点のない数 - float(浮動小数点数型):
3.14、0.5、-1.0など、小数点のある数
a = 7
b = 2
print(a + b) # 9
print(a - b) # 5
print(a * b) # 14
print(a / b) # 3.5 ← 割り算の結果はfloatになる
print(a // b) # 3 ← 切り捨て(整数の商)
print(a % b) # 1 ← 余り
print(a ** b) # 49 ← 7の2乗👉 /の結果は、割り切れる場合でもfloat(小数)になります(4 / 2は2.0)。整数として扱いたいときは//を使うか、後述のint()で変換します。
💡 floatの計算では、0.1 + 0.2が0.30000000000000004のように、わずかな誤差が出ることがあります。コンピューターが小数を2進数で扱う都合によるもので、Pythonに限らず多くの言語で起こります。お金の計算など厳密さが必要な場面では注意が必要です。
4. 真偽値型(bool)
boolは、True(真)かFalse(偽)の2つの値だけを持つ型です。先頭が大文字である点に注意してください。
is_active = True
print(3 > 1) # True
print(10 == 5) # False👉 比較演算子(>、<、==、!=など)の結果はboolになります。if文の条件部分では、このboolの値によって処理が分かれます。
5. 型を調べる:type()関数
値や変数がどの型なのかを調べるにはtype()を使います。「思った通りの型になっていない」ときの原因調査に役立ちます。
print(type("太郎")) # <class 'str'>
print(type(20)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
print(type("100")) # <class 'str'> ← クォートで囲むと文字列6. 型変換(キャスト):int() / str() / float()
ある型の値を別の型に変換することを型変換(キャスト)と呼びます。よく使うのは次の3つです。
int(値):整数に変換するstr(値):文字列に変換するfloat(値):小数に変換する
price = "500"
print(int(price) + 100) # 600(文字列を整数にしてから計算)
count = 3
print("残り" + str(count) + "個") # 残り3個(数値を文字列にしてから連結)
print(float("1.5") * 2) # 3.0👉 文字列と数値はそのまま+できません。"残り" + 3のように書くとTypeErrorになります。数値を文字列に混ぜるときはstr()で変換するか、次に紹介するf文字列を使います。
💡 int("abc")のように、数値として解釈できない文字列をint()に渡すとエラー(ValueError)になります。int("3.5")も同様にエラーです(いったんfloat("3.5")にする必要があります)。
7. input()で受け取った値は必ず文字列
キーボードからの入力を受け取るinput()は、入力された内容を必ず文字列(str)として返します。ここは初心者がとてもつまずきやすいポイントです。
age = input("年齢を入力してください: ")
print(age + 1) # TypeError! ageは文字列なので数値を足せない数値として計算したい場合は、int()で変換してから使います。
age = int(input("年齢を入力してください: "))
print(age + 1) # 入力が20なら 218. f文字列で変数を埋め込む
文字列の中に変数の値を入れたいときは、f文字列(フォーマット済み文字列リテラル)が便利です。文字列の先頭にfを付け、{ }の中に変数を書きます。
name = "太郎"
age = 20
print(f"{name}さんは{age}歳です") # 太郎さんは20歳です👉 f文字列を使うと、数値でもstr()で変換せずにそのまま埋め込めます。"名前" + str(age) + "歳"のように+でつなぐより読みやすく、書き間違いも減るため、現在はf文字列がよく使われます。
9. データ型 早見表
| 型 | 正式名 | 例 | 主な用途 |
|---|---|---|---|
| 文字列 | str | "太郎"、'Python' | 文字・テキスト |
| 整数 | int | 10、-3、0 | 個数・回数・年齢 |
| 小数 | float | 3.14、0.5 | 割合・平均・測定値 |
| 真偽値 | bool | True、False | 条件判定 |
10. まとめ
Pythonのデータ型についてまとめると、次のようになります。
- 主な型はstr(文字列)・int(整数)・float(小数)・bool(真偽値)の4つ
- 型は
type()で調べられる - 型が合わないときは
int()・str()・float()で変換する input()の返り値は必ず文字列。数値として使うならint()で変換する- 文字列に変数を埋め込むときはf文字列が便利
👉 「input()の値は文字列」「文字列と数値はそのまま足せない」の2つを覚えておくだけで、初心者がよく出会うエラーの多くを避けられます。実際に小さなプログラムを書きながら、型を意識する習慣をつけていきましょう。