この記事では、数値型と文字列型の相互変換について詳しく解説する。型変換はPythonの基本中の基本だが、エラーが発生しやすい箇所でもあるため、しっかりとマスターしておこう。
Pythonにおける型変換の基本概念
Pythonでプログラムを書いていると、数値を文字列に変換したり、その逆を行ったりする場面が頻繁に現れる。
例えば、ユーザーからの入力は常に文字列として受け取られるため、計算に使用する場合は数値型への変換が必須だ。
なぜ型変換が必要なのか
Pythonは「強い型付け」を採用している言語のため、異なる型同士の演算は基本的にできない。
そのため、型変換が重要になってくる。
# エラーになる例
age_str = "25"
next_year = age_str + 1 # TypeError: can only concatenate str (not "int") to str
# 正しい方法
age_str = "25"
age_num = int(age_str) # 文字列を整数に変換
next_year = age_num + 1 # 26
print(f"来年は{next_year}歳になります")
文字列から数値への変換
数値に変換する際は、整数への変換はint()関数、浮動小数点数への変換はfloat()関数を使用する。それぞれの特徴と使い方を詳しく見ていこう。
int()関数による整数変換
int()関数は文字列などを整数型に変換する際に使用する。
# 基本的な変換
number_str = "42"
number_int = int(number_str)
print(f"文字列: {number_str}, 整数: {number_int}")
print(f"型: {type(number_str)} → {type(number_int)}")
# 負の数も変換可能
negative_str = "-123"
negative_int = int(negative_str)
print(f"負の数: {negative_int}")
# 計算での使用例
price_str = input("商品の価格を入力してください: ")
price = int(price_str)
tax_included = int(price * 1.1)
print(f"税込価格: {tax_included}円")
float()関数による浮動小数点数変換
小数点を含む数値を扱う場合は、float()関数を使用する。
# 小数点を含む文字列の変換
decimal_str = "3.14"
decimal_float = float(decimal_str)
print(f"円周率: {decimal_float}")
# 整数形式の文字列もfloatに変換可能
integer_str = "100"
float_from_int = float(integer_str)
print(f"整数文字列をfloatに: {float_from_int}") # 100.0
# 科学的記数法も対応
scientific_str = "1.23e-4"
scientific_float = float(scientific_str)
print(f"科学的記数法: {scientific_float}") # 0.000123

【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。Pythonの基礎から生成AI活用までを20時間ほどで一気に学びます。業務で活かせるPythonの基礎知識はしっかりと身につきます。
数値から文字列への変換
逆に、数値を文字列に変換する場合はstr()関数を使用する。この変換で、エラーが発生することはほとんどない。
str()関数による文字列変換
# 整数の文字列変換
age = 25
age_str = str(age)
print(f"数値: {age}, 文字列: '{age_str}'")
print(f"型: {type(age)} → {type(age_str)}")
# 浮動小数点数の変換
pi = 3.14159
pi_str = str(pi)
print(f"π: {pi_str}")
# 文字列連結での活用
score = 85
message = "あなたの点数は" + str(score) + "点です"
print(message)
f文字列による暗黙的な変換
実は、f文字列を使用すると自動的に型変換が行われるため、str()関数を明示的に使う必要がない場合も多い。
# f文字列での自動変換
name = "山田"
age = 30
height = 175.5
# 自動的に数値が文字列に変換される
profile = f"名前: {name}, 年齢: {age}, 身長: {height}cm"
print(profile)
# 数値フォーマットも同時に指定可能
price = 1234.567
formatted_price = f"価格: ¥{price:,.2f}"
print(formatted_price) # 価格: ¥1,234.57
型変換時のエラーハンドリング
型変換でよくある問題は、変換できない文字列を数値に変換しようとしてValueErrorが発生することだ。
実際のプログラムでは、このようなエラーに対処する必要がある。
ValueError対策の基本
# エラーが発生する例
try:
invalid_str = "abc123"
number = int(invalid_str) # ValueError発生
except ValueError:
print("数値に変換できない文字列です")
# より実用的なエラーハンドリング
def safe_int_conversion(value):
"""安全に整数変換を行う関数"""
try:
return int(value)
except ValueError:
print(f"'{value}'は整数に変換できません")
return None
# 使用例
user_input = "25"
result = safe_int_conversion(user_input)
if result is not None:
print(f"変換成功: {result}")
ユーザー入力の検証
ユーザーからの入力を数値として使用する場合の実践的なパターンだ。
def get_valid_number(prompt):
"""有効な数値が入力されるまで繰り返す関数"""
while True:
user_input = input(prompt)
try:
number = int(user_input)
return number
except ValueError:
print("有効な整数を入力してください。")
# 実際の使用例
age = get_valid_number("年齢を入力してください: ")
print(f"あなたは{age}歳ですね")
# より高度な検証(範囲チェック付き)
def get_age():
while True:
try:
age_str = input("年齢を入力してください(0-150): ")
age = int(age_str)
if 0 <= age <= 150:
return age
else:
print("0から150の間で入力してください。")
except ValueError:
print("数値を入力してください。")

【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。Pythonの基礎から生成AI活用までを20時間ほどで一気に学びます。業務で活かせるPythonの基礎知識はしっかりと身につきます。