型変換 - データ型を変える
目次
このレッスンで学ぶこと
- データ型の変換(型変換)とは何か
- 数値・文字列・リスト間の変換方法
- 型変換でよくあるエラーとその対処法
- type()関数による型の確認方法
型変換とは
型変換は、あるデータ型を別のデータ型に変換することです。
Pythonでは、異なるデータ型同士を直接組み合わせることはできません。たとえば、文字列と数値を足し算したり、整数と文字列を連結することはできません。
型変換が必要な例
Python# これはエラーになる age = "25" # 文字列 print(age + 1) # TypeError: 文字列と数値は計算できない # 型変換すれば計算できる age = "25" age_num = int(age) # 文字列 → 整数に変換 print(age_num + 1) # 26
Pythonの主な型変換関数
| 関数 | 説明 | 例 |
|---|---|---|
int() | 整数型に変換 | int("123") → 123 |
float() | 浮動小数点型に変換 | float("3.14") → 3.14 |
str() | 文字列型に変換 | str(123) → "123" |
bool() | ブール型に変換 | bool(1) → True |
list() | リストに変換 | list("abc") → ['a', 'b', 'c'] |
Python# 様々な型変換 num_str = "123" num = int(num_str) # "123" → 123 float_num = float("3.14") # "3.14" → 3.14 text = str(456) # 456 → "456" flag = bool(1) # 1 → True
💡 豆知識: 型変換は英語で「Type Conversion」または「Type Casting」と言います。プログラミングの基本テクニックの一つです。
なぜ型変換が必要なのか?
プログラムでは、様々なデータを組み合わせて処理します。その際、データ型を正しく合わせることが不可欠です。
型変換が必要な場面
1. ユーザー入力の処理
Python# input()は常に文字列を返す age_str = input("年齢を入力: ") # "25" (文字列) age = int(age_str) # 25 (整数)に変換 next_year_age = age + 1 # 計算可能
2. 文字列と数値の組み合わせ
Python# エラーになる例 score = 85 # print("得点: " + score) # TypeError # 正しい方法 print("得点: " + str(score)) # str()で文字列に変換 # または print(f"得点: {score}") # f-stringを使う
3. 小数と整数の計算
Python# 整数同士の割り算 result = 10 / 3 print(result) # 3.333...(自動的にfloat型になる) # 明示的な変換 a = 10 b = float(a) # 10.0(float型)
型変換のメリット
- 柔軟性: 異なる型のデータを組み合わせられる
- エラー回避: 型の不一致によるエラーを防げる
- データ処理: 適切な型で効率的な処理ができる
型の確認
type()関数
機能: 変数や値のデータ型を確認します。
Python# 型を確認 print(type(10)) # <class 'int'> print(type(3.14)) # <class 'float'> print(type("Hello")) # <class 'str'> print(type([1, 2, 3])) # <class 'list'> print(type(True)) # <class 'bool'>
用途: デバッグ、型の確認
文字列への変換
str() - 文字列に変換
機能: 数値やリストなど、あらゆるデータ型を文字列に変換します。
Python# 数値を文字列に num = 123 text = str(num) print(text) # "123" print(type(text)) # <class 'str'> # 浮動小数点を文字列に pi = 3.14 text_pi = str(pi) print(text_pi) # "3.14" # リストを文字列に my_list = [1, 2, 3] text_list = str(my_list) print(text_list) # "[1, 2, 3]"
用途: 文字列結合、ファイル出力、画面表示
数値への変換
int() - 整数に変換
機能: 文字列や小数を整数に変換します。
Python# 文字列を整数に text = "123" num = int(text) print(num) # 123 print(type(num)) # <class 'int'> # 浮動小数点を整数に(小数点以下切り捨て) pi = 3.14 num = int(pi) print(num) # 3
注意: 小数を含む文字列("3.14")は直接int()で変換できません。まずfloat()で変換してからint()にします。
float() - 小数に変換
機能: 文字列や整数を浮動小数点数(小数)に変換します。
Python# 文字列を小数に text = "3.14" num = float(text) print(num) # 3.14 print(type(num)) # <class 'float'> # 整数を小数に num = 10 decimal = float(num) print(decimal) # 10.0
用途: 精密な計算、割り算の結果を小数で扱う
リスト・タプル・集合への変換
list() - リストに変換
機能: 文字列、タプル、集合などをリストに変換します。
Python# 文字列をリストに(1文字ずつ分割) text = "Hello" chars = list(text) print(chars) # ['H', 'e', 'l', 'l', 'o'] # タプルをリストに my_tuple = (1, 2, 3) my_list = list(my_tuple) print(my_list) # [1, 2, 3] # 集合をリストに my_set = {3, 1, 2} my_list = list(my_set) print(my_list) # [1, 2, 3](順序は不定)
用途: データの編集(タプルは変更不可なのでリストに変換)、順序付け
tuple() - タプルに変換
機能: リストや文字列をタプル(変更不可のリスト)に変換します。
Python# リストをタプルに my_list = [1, 2, 3] my_tuple = tuple(my_list) print(my_tuple) # (1, 2, 3) # 文字列をタプルに text = "abc" chars = tuple(text) print(chars) # ('a', 'b', 'c')
用途: 辞書のキーにする、データを保護(変更不可にする)
set() - 集合に変換
機能: リストや文字列を集合(重複のないデータの集まり)に変換します。
Python# リストを集合に(重複除去) numbers = [1, 2, 2, 3, 3, 3] unique = set(numbers) print(unique) # {1, 2, 3} # 文字列を集合に text = "hello" chars = set(text) print(chars) # {'h', 'e', 'l', 'o'}(重複するlは1つだけ)
用途: 重複の除去、集合演算
具体例
例1: ユーザー入力の処理
Python# input()は常に文字列を返す age_str = input("年齢を入力してください: ") # 整数に変換 age = int(age_str) # 計算 next_year_age = age + 1 print(f"来年は{next_year_age}歳です")
例2: 計算結果の表示
Pythonprice = 1000 tax_rate = 0.1 tax = price * tax_rate # 数値を文字列に変換して結合 message = "税込価格は" + str(price + tax) + "円です" print(message) # f-stringなら自動変換される(推奨) message = f"税込価格は{price + tax}円です" print(message)
例3: CSVデータの処理
Python# CSVの1行(文字列) csv_line = "太郎,25,85.5" # カンマで分割 parts = csv_line.split(",") print(parts) # ['太郎', '25', '85.5'] # 型変換 name = parts[0] # 文字列のまま age = int(parts[1]) # 整数に変換 score = float(parts[2]) # 小数に変換 print(f"{name}さん、{age}歳、スコア{score}点")
例4: 真偽値への変換
Python# bool() - 真偽値に変換 # 0と空はFalse print(bool(0)) # False print(bool("")) # False print(bool([])) # False # それ以外はTrue print(bool(1)) # True print(bool("text")) # True print(bool([1])) # True
例5: 文字列から数値リストへ
Python# スペース区切りの数値文字列 numbers_str = "10 20 30 40 50" # 分割 parts = numbers_str.split() print(parts) # ['10', '20', '30', '40', '50'] # 各要素を整数に変換 numbers = [] for part in parts: numbers.append(int(part)) print(numbers) # [10, 20, 30, 40, 50] # リスト内包表記でも書ける numbers = [int(x) for x in numbers_str.split()] print(numbers) # [10, 20, 30, 40, 50]
例6: 辞書のキーと値
Python# 数値をキーにした辞書 scores = {1: "優", 2: "良", 3: "可"} # キーを文字列に変換 key = "1" # print(scores[key]) # KeyError # 文字列を整数に変換 key_int = int(key) print(scores[key_int]) # "優"
よくある間違い
間違い1: 変換できない文字列
Pythontext = "こんにちは" num = int(text) # ValueError: invalid literal for int() with base 10: 'こんにちは'
原因: 数値として解釈できない文字列は変換できません。
対策:
Pythontext = "123" if text.isdigit(): num = int(text) print(num) else: print("数値に変換できません")
間違い2: 小数を含む文字列をint()
Pythontext = "3.14" num = int(text) # ValueError: invalid literal for int() with base 10: '3.14'
対策:
Pythontext = "3.14" num = float(text) # まずfloatに変換 num_int = int(num) # 次にintに変換 print(num_int) # 3
間違い3: 型の不一致
Pythonage = "25" result = age + 5 # TypeError: can only concatenate str (not "int") to str
対策:
Pythonage = "25" result = int(age) + 5 print(result) # 30
間違い4: bool()の誤解
Python# "False"という文字列はTrueになる text = "False" result = bool(text) print(result) # True(空でない文字列はTrue)
正しい方法:
Pythontext = "False" result = (text == "True") print(result) # False
間違い5: list()とsplit()の混同
Python# list()は1文字ずつ分割 text = "hello" result1 = list(text) print(result1) # ['h', 'e', 'l', 'l', 'o'] # split()は区切り文字で分割 text = "hello world" result2 = text.split() print(result2) # ['hello', 'world']
練習問題
問題1(基礎)⭐☆☆
文字列 "100" と "200" を整数に変換して、合計を計算してください。
💡 ヒント
int() 関数を使います。
✅ 解答例
Pythonnum1_str = "100" num2_str = "200" # 整数に変換 num1 = int(num1_str) num2 = int(num2_str) # 合計を計算 total = num1 + num2 print(total) # 300
実行結果:
300
解説:
文字列を数値に変換しないと、"100" + "200" は "100200" という文字列結合になってしまいます。
問題2(基礎)⭐☆☆
ユーザーに身長(cm)を入力してもらい、メートルに変換して表示してください。
💡 ヒント
input()で入力を受け取る(文字列)float()で小数に変換- 100で割ってメートルに
✅ 解答例
Python# 身長を入力 height_cm_str = input("身長(cm)を入力してください: ") # 小数に変換 height_cm = float(height_cm_str) # メートルに変換 height_m = height_cm / 100 print(f"あなたの身長は{height_m}mです")
実行例:
身長(cm)を入力してください: 170
あなたの身長は1.7mです
解説:
input() は常に文字列を返すため、計算する前に数値型に変換する必要があります。
問題3(応用)⭐⭐☆
スペース区切りで入力された3つの点数を、リストの数値として受け取り、平均点を計算してください。
入力例: 85 92 78
💡 ヒント
input()で入力を受け取るsplit()でスペースで分割- 各要素を
int()で整数に変換 - 平均を計算
✅ 解答例
Python# 点数を入力 scores_str = input("3つの点数をスペース区切りで入力してください: ") # スペースで分割 parts = scores_str.split() # 各要素を整数に変換 scores = [] for part in parts: scores.append(int(part)) # 平均を計算 average = sum(scores) / len(scores) print(f"平均点: {average}点")
実行例:
3つの点数をスペース区切りで入力してください: 85 92 78
平均点: 85.0点
解説:
文字列を split() で分割し、各要素を int() で整数に変換します。リスト内包表記を使うと scores = [int(x) for x in parts] と1行で書けます。
まとめ
このレッスンでは、型変換の基本とエラー回避の考え方を学びました。
type()で現在の型を確認し、適切な変換を選ぶことができます。int(),float(),str()で基本型を相互に変換できます。list(),tuple(),set()を使うとコレクション型の変換ができます。input()は文字列を返すため、数値計算前に型変換が必要です。- 変換失敗が起きる条件を理解し、事前チェックや例外処理につなげることが重要です。
型変換 - データ型を変える
目次
このレッスンで学ぶこと
- データ型の変換(型変換)とは何か
- 数値・文字列・リスト間の変換方法
- 型変換でよくあるエラーとその対処法
- type()関数による型の確認方法
型変換とは
型変換は、あるデータ型を別のデータ型に変換することです。
Pythonでは、異なるデータ型同士を直接組み合わせることはできません。たとえば、文字列と数値を足し算したり、整数と文字列を連結することはできません。
型変換が必要な例
Python# これはエラーになる age = "25" # 文字列 print(age + 1) # TypeError: 文字列と数値は計算できない # 型変換すれば計算できる age = "25" age_num = int(age) # 文字列 → 整数に変換 print(age_num + 1) # 26
Pythonの主な型変換関数
| 関数 | 説明 | 例 |
|---|---|---|
int() | 整数型に変換 | int("123") → 123 |
float() | 浮動小数点型に変換 | float("3.14") → 3.14 |
str() | 文字列型に変換 | str(123) → "123" |
bool() | ブール型に変換 | bool(1) → True |
list() | リストに変換 | list("abc") → ['a', 'b', 'c'] |
Python# 様々な型変換 num_str = "123" num = int(num_str) # "123" → 123 float_num = float("3.14") # "3.14" → 3.14 text = str(456) # 456 → "456" flag = bool(1) # 1 → True
💡 豆知識: 型変換は英語で「Type Conversion」または「Type Casting」と言います。プログラミングの基本テクニックの一つです。
なぜ型変換が必要なのか?
プログラムでは、様々なデータを組み合わせて処理します。その際、データ型を正しく合わせることが不可欠です。
型変換が必要な場面
1. ユーザー入力の処理
Python# input()は常に文字列を返す age_str = input("年齢を入力: ") # "25" (文字列) age = int(age_str) # 25 (整数)に変換 next_year_age = age + 1 # 計算可能
2. 文字列と数値の組み合わせ
Python# エラーになる例 score = 85 # print("得点: " + score) # TypeError # 正しい方法 print("得点: " + str(score)) # str()で文字列に変換 # または print(f"得点: {score}") # f-stringを使う
3. 小数と整数の計算
Python# 整数同士の割り算 result = 10 / 3 print(result) # 3.333...(自動的にfloat型になる) # 明示的な変換 a = 10 b = float(a) # 10.0(float型)
型変換のメリット
- 柔軟性: 異なる型のデータを組み合わせられる
- エラー回避: 型の不一致によるエラーを防げる
- データ処理: 適切な型で効率的な処理ができる
型の確認
type()関数
機能: 変数や値のデータ型を確認します。
Python# 型を確認 print(type(10)) # <class 'int'> print(type(3.14)) # <class 'float'> print(type("Hello")) # <class 'str'> print(type([1, 2, 3])) # <class 'list'> print(type(True)) # <class 'bool'>
用途: デバッグ、型の確認
文字列への変換
str() - 文字列に変換
機能: 数値やリストなど、あらゆるデータ型を文字列に変換します。
Python# 数値を文字列に num = 123 text = str(num) print(text) # "123" print(type(text)) # <class 'str'> # 浮動小数点を文字列に pi = 3.14 text_pi = str(pi) print(text_pi) # "3.14" # リストを文字列に my_list = [1, 2, 3] text_list = str(my_list) print(text_list) # "[1, 2, 3]"
用途: 文字列結合、ファイル出力、画面表示
数値への変換
int() - 整数に変換
機能: 文字列や小数を整数に変換します。
Python# 文字列を整数に text = "123" num = int(text) print(num) # 123 print(type(num)) # <class 'int'> # 浮動小数点を整数に(小数点以下切り捨て) pi = 3.14 num = int(pi) print(num) # 3
注意: 小数を含む文字列("3.14")は直接int()で変換できません。まずfloat()で変換してからint()にします。
float() - 小数に変換
機能: 文字列や整数を浮動小数点数(小数)に変換します。
Python# 文字列を小数に text = "3.14" num = float(text) print(num) # 3.14 print(type(num)) # <class 'float'> # 整数を小数に num = 10 decimal = float(num) print(decimal) # 10.0
用途: 精密な計算、割り算の結果を小数で扱う
リスト・タプル・集合への変換
list() - リストに変換
機能: 文字列、タプル、集合などをリストに変換します。
Python# 文字列をリストに(1文字ずつ分割) text = "Hello" chars = list(text) print(chars) # ['H', 'e', 'l', 'l', 'o'] # タプルをリストに my_tuple = (1, 2, 3) my_list = list(my_tuple) print(my_list) # [1, 2, 3] # 集合をリストに my_set = {3, 1, 2} my_list = list(my_set) print(my_list) # [1, 2, 3](順序は不定)
用途: データの編集(タプルは変更不可なのでリストに変換)、順序付け
tuple() - タプルに変換
機能: リストや文字列をタプル(変更不可のリスト)に変換します。
Python# リストをタプルに my_list = [1, 2, 3] my_tuple = tuple(my_list) print(my_tuple) # (1, 2, 3) # 文字列をタプルに text = "abc" chars = tuple(text) print(chars) # ('a', 'b', 'c')
用途: 辞書のキーにする、データを保護(変更不可にする)
set() - 集合に変換
機能: リストや文字列を集合(重複のないデータの集まり)に変換します。
Python# リストを集合に(重複除去) numbers = [1, 2, 2, 3, 3, 3] unique = set(numbers) print(unique) # {1, 2, 3} # 文字列を集合に text = "hello" chars = set(text) print(chars) # {'h', 'e', 'l', 'o'}(重複するlは1つだけ)
用途: 重複の除去、集合演算
具体例
例1: ユーザー入力の処理
Python# input()は常に文字列を返す age_str = input("年齢を入力してください: ") # 整数に変換 age = int(age_str) # 計算 next_year_age = age + 1 print(f"来年は{next_year_age}歳です")
例2: 計算結果の表示
Pythonprice = 1000 tax_rate = 0.1 tax = price * tax_rate # 数値を文字列に変換して結合 message = "税込価格は" + str(price + tax) + "円です" print(message) # f-stringなら自動変換される(推奨) message = f"税込価格は{price + tax}円です" print(message)
例3: CSVデータの処理
Python# CSVの1行(文字列) csv_line = "太郎,25,85.5" # カンマで分割 parts = csv_line.split(",") print(parts) # ['太郎', '25', '85.5'] # 型変換 name = parts[0] # 文字列のまま age = int(parts[1]) # 整数に変換 score = float(parts[2]) # 小数に変換 print(f"{name}さん、{age}歳、スコア{score}点")
例4: 真偽値への変換
Python# bool() - 真偽値に変換 # 0と空はFalse print(bool(0)) # False print(bool("")) # False print(bool([])) # False # それ以外はTrue print(bool(1)) # True print(bool("text")) # True print(bool([1])) # True
例5: 文字列から数値リストへ
Python# スペース区切りの数値文字列 numbers_str = "10 20 30 40 50" # 分割 parts = numbers_str.split() print(parts) # ['10', '20', '30', '40', '50'] # 各要素を整数に変換 numbers = [] for part in parts: numbers.append(int(part)) print(numbers) # [10, 20, 30, 40, 50] # リスト内包表記でも書ける numbers = [int(x) for x in numbers_str.split()] print(numbers) # [10, 20, 30, 40, 50]
例6: 辞書のキーと値
Python# 数値をキーにした辞書 scores = {1: "優", 2: "良", 3: "可"} # キーを文字列に変換 key = "1" # print(scores[key]) # KeyError # 文字列を整数に変換 key_int = int(key) print(scores[key_int]) # "優"
よくある間違い
間違い1: 変換できない文字列
Pythontext = "こんにちは" num = int(text) # ValueError: invalid literal for int() with base 10: 'こんにちは'
原因: 数値として解釈できない文字列は変換できません。
対策:
Pythontext = "123" if text.isdigit(): num = int(text) print(num) else: print("数値に変換できません")
間違い2: 小数を含む文字列をint()
Pythontext = "3.14" num = int(text) # ValueError: invalid literal for int() with base 10: '3.14'
対策:
Pythontext = "3.14" num = float(text) # まずfloatに変換 num_int = int(num) # 次にintに変換 print(num_int) # 3
間違い3: 型の不一致
Pythonage = "25" result = age + 5 # TypeError: can only concatenate str (not "int") to str
対策:
Pythonage = "25" result = int(age) + 5 print(result) # 30
間違い4: bool()の誤解
Python# "False"という文字列はTrueになる text = "False" result = bool(text) print(result) # True(空でない文字列はTrue)
正しい方法:
Pythontext = "False" result = (text == "True") print(result) # False
間違い5: list()とsplit()の混同
Python# list()は1文字ずつ分割 text = "hello" result1 = list(text) print(result1) # ['h', 'e', 'l', 'l', 'o'] # split()は区切り文字で分割 text = "hello world" result2 = text.split() print(result2) # ['hello', 'world']
練習問題
問題1(基礎)⭐☆☆
文字列 "100" と "200" を整数に変換して、合計を計算してください。
💡 ヒント
int() 関数を使います。
✅ 解答例
Pythonnum1_str = "100" num2_str = "200" # 整数に変換 num1 = int(num1_str) num2 = int(num2_str) # 合計を計算 total = num1 + num2 print(total) # 300
実行結果:
300
解説:
文字列を数値に変換しないと、"100" + "200" は "100200" という文字列結合になってしまいます。
問題2(基礎)⭐☆☆
ユーザーに身長(cm)を入力してもらい、メートルに変換して表示してください。
💡 ヒント
input()で入力を受け取る(文字列)float()で小数に変換- 100で割ってメートルに
✅ 解答例
Python# 身長を入力 height_cm_str = input("身長(cm)を入力してください: ") # 小数に変換 height_cm = float(height_cm_str) # メートルに変換 height_m = height_cm / 100 print(f"あなたの身長は{height_m}mです")
実行例:
身長(cm)を入力してください: 170
あなたの身長は1.7mです
解説:
input() は常に文字列を返すため、計算する前に数値型に変換する必要があります。
問題3(応用)⭐⭐☆
スペース区切りで入力された3つの点数を、リストの数値として受け取り、平均点を計算してください。
入力例: 85 92 78
💡 ヒント
input()で入力を受け取るsplit()でスペースで分割- 各要素を
int()で整数に変換 - 平均を計算
✅ 解答例
Python# 点数を入力 scores_str = input("3つの点数をスペース区切りで入力してください: ") # スペースで分割 parts = scores_str.split() # 各要素を整数に変換 scores = [] for part in parts: scores.append(int(part)) # 平均を計算 average = sum(scores) / len(scores) print(f"平均点: {average}点")
実行例:
3つの点数をスペース区切りで入力してください: 85 92 78
平均点: 85.0点
解説:
文字列を split() で分割し、各要素を int() で整数に変換します。リスト内包表記を使うと scores = [int(x) for x in parts] と1行で書けます。
まとめ
このレッスンでは、型変換の基本とエラー回避の考え方を学びました。
type()で現在の型を確認し、適切な変換を選ぶことができます。int(),float(),str()で基本型を相互に変換できます。list(),tuple(),set()を使うとコレクション型の変換ができます。input()は文字列を返すため、数値計算前に型変換が必要です。- 変換失敗が起きる条件を理解し、事前チェックや例外処理につなげることが重要です。