Python型変換の基本|str・int・floatを使いこなす
Pythonの型変換の基本を解説。str、int、floatを使った文字列・整数・浮動小数点数の相互変換方法から、エラーハンドリングまで詳しく説明します。
データの型で困ったことはありませんか?
みなさん、Pythonでプログラムを書いている時に「文字列と数値がうまく混ざらない」と困ったことはありませんか?
「文字列を数値に変換したい」 「数値を文字列として表示したい」 「計算結果を整数にしたい」
このような場面でつまずく方はとても多いです。
実は、型変換をマスターすれば簡単に解決できるんです。
この記事では、Python初心者の方向けにstr、int、floatを使った型変換の基本から実践的な活用方法まで詳しく解説します。 データ型を自由に操れるようになって、プログラミングをもっと楽しくしましょう!
データ型って何?
データ型は、データの種類を表すものです。
簡単に言うと、文字なのか数字なのかを区別するためのラベルなんです。
主要な3つの型
Pythonでよく使う基本的な型があります。
# 基本的なデータ型string_data = "123" # 文字列(str)integer_data = 456 # 整数(int)float_data = 78.9 # 小数(float)
# 型の確認print(type(string_data)) # <class 'str'>print(type(integer_data)) # <class 'int'>print(type(float_data)) # <class 'float'>
type()関数で型を確認できます。
実行結果:
<class 'str'>
<class 'int'>
<class 'float'>
それぞれ異なる型だということがわかります。
型の違いによる動作の違い
同じ値でも型が違うと動作が変わるんです。
# 型の違いによる動作の違いstr_num = "10" # 文字列の10int_num = 10 # 整数の10float_num = 10.0 # 小数の10
print(str_num + "5") # 105(文字列結合)print(int_num + 5) # 15(数値計算)print(float_num + 5) # 15.0(数値計算)
見た目は同じ10でも、型によって結果が違います。
実行結果:
105
15
15.0
文字列は結合、数値は計算になりました。
str関数:数値を文字列に変換
数値を文字列に変える方法を学びましょう。
表示や結合で役立ちます。
基本的な使い方
str()関数で数値を文字列に変換できます。
# 整数を文字列に変換number = 123string_result = str(number)print(string_result) # 123print(type(string_result)) # <class 'str'>
# 小数を文字列に変換decimal = 45.67string_result = str(decimal)print(string_result) # 45.67print(type(string_result)) # <class 'str'>
どんな数値でも文字列になります。
実行結果:
123
<class 'str'>
45.67
<class 'str'>
型がstrに変わったことがわかります。
文字列結合での活用
数値を含む文章を作る時に便利です。
# 情報を組み合わせてメッセージ作成name = "田中"age = 25score = 88.5
# str()を使って文字列結合message = name + "さんは" + str(age) + "歳、点数は" + str(score) + "点です"print(message)
# f文字列を使った方法(推奨)message = f"{name}さんは{age}歳、点数は{score}点です"print(message)
f文字列を使うと自動で型変換されるので便利です。
実行結果:
田中さんは25歳、点数は88.5点です
田中さんは25歳、点数は88.5点です
どちらも同じ結果になります。
様々な数値の変換
いろいろな形の数値も変換できます。
# 様々な数値の文字列変換large_number = 1234567890scientific_notation = 1.23e5negative_number = -456
print(str(large_number)) # 1234567890print(str(scientific_notation)) # 123000.0print(str(negative_number)) # -456
どんな形の数値でも文字列になります。
実行結果:
1234567890
123000.0
-456
すべて文字列として表示されました。
int関数:文字列を整数に変換
文字列や小数を整数に変える方法です。
計算や判定で重要な機能です。
基本的な使い方
int()関数で整数に変換できます。
# 文字列を整数に変換string_number = "123"integer_result = int(string_number)print(integer_result) # 123print(type(integer_result)) # <class 'int'>
# 小数を整数に変換(小数点以下切り捨て)decimal_number = 45.67integer_result = int(decimal_number)print(integer_result) # 45print(type(integer_result)) # <class 'int'>
小数を整数にすると、小数点以下が切り捨てられます。
実行結果:
123
<class 'int'>
45
<class 'int'>
どちらも整数型になりました。
負の数の変換
マイナスの数も正しく変換されます。
# 負の数の変換negative_string = "-456"negative_float = -78.9
print(int(negative_string)) # -456print(int(negative_float)) # -78(小数点以下切り捨て)
マイナス記号も含めて正しく処理されます。
実行結果:
-456
-78
負の数も問題なく変換できました。
進数を指定した変換
2進数や16進数も変換できます。
# 異なる進数での変換binary_string = "1010" # 2進数octal_string = "12" # 8進数hex_string = "FF" # 16進数
print(int(binary_string, 2)) # 10(2進数から)print(int(octal_string, 8)) # 10(8進数から)print(int(hex_string, 16)) # 255(16進数から)
第2引数で進数を指定します。
実行結果:
10
10
255
それぞれ10進数に変換されました。
float関数:小数に変換
文字列や整数を小数に変える方法です。
精密な計算で役立ちます。
基本的な使い方
float()関数で小数に変換できます。
# 文字列を小数に変換string_decimal = "123.45"float_result = float(string_decimal)print(float_result) # 123.45print(type(float_result)) # <class 'float'>
# 整数を小数に変換integer_number = 789float_result = float(integer_number)print(float_result) # 789.0print(type(float_result)) # <class 'float'>
整数も小数になると.0が付きます。
実行結果:
123.45
<class 'float'>
789.0
<class 'float'>
どちらも小数型になりました。
科学記法での変換
科学記法の文字列も変換できます。
# 科学記法での変換scientific_string = "1.23e5" # 1.23 × 10^5exponential_string = "4.56E-3" # 4.56 × 10^-3
print(float(scientific_string)) # 123000.0print(float(exponential_string)) # 0.00456
科学記法も正しく計算されます。
実行結果:
123000.0
0.00456
適切な小数値に変換されました。
特殊な値の変換
無限大やNaNも扱えるんです。
# 特殊な値の変換infinity_string = "inf" # 無限大negative_infinity = "-inf" # 負の無限大not_a_number = "nan" # 非数
print(float(infinity_string)) # infprint(float(negative_infinity)) # -infprint(float(not_a_number)) # nan
特殊な数学的概念も表現できます。
実行結果:
inf
-inf
nan
科学計算で使われる特殊値です。
実践的な活用例
実際のプログラムでよく使われる場面を見てみましょう。
日常的なプログラミングで役立つパターンです。
ユーザー入力の処理
ユーザーからの入力を安全に数値に変換する方法です。
def get_user_age(): """ユーザーから年齢を安全に取得""" while True: age_input = input("年齢を入力してください: ") try: age = int(age_input) if age >= 0: return age else: print("正の数を入力してください") except ValueError: print("正しい数値を入力してください")
# シミュレーション例def simulate_user_input(): """入力例のシミュレーション""" test_inputs = ["25", "-5", "abc", "30"] for test_input in test_inputs: try: age = int(test_input) if age >= 0: print(f"入力: '{test_input}' → 年齢: {age}歳") else: print(f"入力: '{test_input}' → エラー: 正の数を入力してください") except ValueError: print(f"入力: '{test_input}' → エラー: 正しい数値を入力してください")
simulate_user_input()
エラーハンドリングで安全な処理ができます。
実行結果:
入力: '25' → 年齢: 25歳
入力: '-5' → エラー: 正の数を入力してください
入力: 'abc' → エラー: 正しい数値を入力してください
入力: '30' → 年齢: 30歳
不正な入力も適切に処理されます。
計算結果の型変換
計算結果を適切な形で表示する例です。
def calculate_average(scores): """成績の平均を計算して適切な形で返す""" total = sum(scores) count = len(scores) average = total / count # 平均点を整数で表示 average_int = int(average) # 平均点を小数点1桁で表示 average_rounded = round(average, 1) return average_int, average_rounded
# 使用例test_scores = [85, 92, 78, 96, 73]avg_int, avg_rounded = calculate_average(test_scores)
print(f"テストの点数: {test_scores}")print(f"平均点(整数): {avg_int}点")print(f"平均点(小数): {avg_rounded}点")
# 詳細な情報total = sum(test_scores)print(f"合計点数: {total}点")print(f"受験者数: {len(test_scores)}人")
用途に応じて整数と小数を使い分けできます。
実行結果:
テストの点数: [85, 92, 78, 96, 73]
平均点(整数): 84点
平均点(小数): 84.8点
合計点数: 424点
受験者数: 5人
見やすい形でデータを表示できました。
CSVデータの処理
ファイルから読み込んだデータを適切な型に変換する例です。
def process_csv_data(csv_line): """CSV行のデータを適切な型に変換""" parts = csv_line.strip().split(',') # 各列を適切な型に変換 name = str(parts[0]) # 名前は文字列 age = int(parts[1]) # 年齢は整数 score = float(parts[2]) # 点数は小数 return name, age, score
# 使用例sample_csv_data = [ "田中太郎,25,88.5", "佐藤花子,30,92.0", "鈴木一郎,22,76.8"]
print("CSVデータの処理結果:")for csv_line in sample_csv_data: name, age, score = process_csv_data(csv_line) print(f"名前: {name}, 年齢: {age}歳, 点数: {score}点") print(f" 型: {type(name).__name__}, {type(age).__name__}, {type(score).__name__}")
ファイル処理でも型変換は重要です。
実行結果:
CSVデータの処理結果:
名前: 田中太郎, 年齢: 25歳, 点数: 88.5点
型: str, int, float
名前: 佐藤花子, 年齢: 30歳, 点数: 92.0点
型: str, int, float
名前: 鈴木一郎, 年齢: 22歳, 点数: 76.8点
型: str, int, float
データが適切な型に変換されています。
エラーハンドリング
型変換で起こりうるエラーとその対処法です。
安全なプログラムを作るために重要です。
ValueError の処理
変換できない値のエラー処理です。
def safe_int_conversion(value): """安全な整数変換""" try: return int(value) except ValueError: print(f"エラー: '{value}' は整数に変換できません") return None
# テスト例test_values = ["123", "abc", "12.34", ""]
print("安全な整数変換のテスト:")for value in test_values: result = safe_int_conversion(value) if result is not None: print(f" '{value}' → {result} (成功)") else: print(f" '{value}' → 変換失敗")
エラーが起きても止まらないプログラムが作れます。
実行結果:
安全な整数変換のテスト:
エラー: 'abc' は整数に変換できません
エラー: '12.34' は整数に変換できません
エラー: '' は整数に変換できません
'123' → 123 (成功)
'abc' → 変換失敗
'12.34' → 変換失敗
'' → 変換失敗
エラーを適切に処理できています。
複数の型変換を試す
どの型に変換できるか自動判定する例です。
def smart_conversion(value): """スマートな型変換""" print(f"'{value}'を変換中...") # まず整数変換を試す try: result = int(value) print(f" → {result} (int)") return result except ValueError: print(" 整数変換失敗") # 次に小数変換を試す try: result = float(value) print(f" → {result} (float)") return result except ValueError: print(" 小数変換失敗") # 最後に文字列として返す result = str(value) print(f" → {result} (str)") return result
# テストtest_values = ["123", "12.34", "hello"]
print("スマート変換のテスト:")for value in test_values: result = smart_conversion(value) print()
最適な型を自動選択してくれます。
実行結果:
スマート変換のテスト:
'123'を変換中...
→ 123 (int)
'12.34'を変換中...
整数変換失敗
→ 12.34 (float)
'hello'を変換中...
整数変換失敗
小数変換失敗
→ hello (str)
それぞれ最適な型に変換されました。
型変換の注意点
型変換を使う時に気をつけることです。
トラブルを避けるために覚えておきましょう。
情報の損失
型を変換すると情報が失われることがあります。
# 精度の問題large_float = 1234567890.123456789converted_int = int(large_float)
print(f"元の値: {large_float}")print(f"変換後: {converted_int}")print(f"失われた情報: {large_float - converted_int}")
# 小数から整数への変換decimal_values = [3.8, 3.2, -2.7, -2.1]
print("小数から整数への変換:")for value in decimal_values: converted = int(value) print(f"{value} → {converted} (小数点以下切り捨て)")
小数から整数への変換では小数部分が消失します。
実行結果:
元の値: 1234567890.123457
変換後: 1234567890
失われた情報: 0.12345695495605469
小数から整数への変換:
3.8 → 3 (小数点以下切り捨て)
3.2 → 3 (小数点以下切り捨て)
-2.7 → -2 (小数点以下切り捨て)
-2.1 → -2 (小数点以下切り捨て)
変換前の値は完全には復元できません。
変換できない文字列
文字列の形式が正しくないと変換できません。
# 変換できない文字列の例problematic_strings = ["123abc", "12.34.56", "1,234", "十二", ""]
print("問題のある文字列の変換テスト:")for s in problematic_strings: try: result = int(s) print(f"'{s}' → {result} (成功)") except ValueError: print(f"'{s}' → 変換できません (エラー)")
数字以外が含まれると変換エラーになります。
実行結果:
問題のある文字列の変換テスト:
'123abc' → 変換できません (エラー)
'12.34.56' → 変換できません (エラー)
'1,234' → 変換できません (エラー)
'十二' → 変換できません (エラー)
'' → 変換できません (エラー)
純粋な数字の文字列のみ変換可能です。
まとめ: 型変換で自由自在なデータ操作
Python型変換の基本から実践的な活用方法まで詳しく解説しました。
型変換をマスターすることで、様々なデータ処理が効率的にできるようになります。
覚えておきたいポイント
これだけは覚えておきましょう。
- str(): 数値を文字列に変換(表示・結合用)
- int(): 文字列・小数を整数に変換(計算用)
- float(): 文字列・整数を小数に変換(精密計算用)
- エラー処理: try-except文で安全な変換
よく使われる場面
日常的なプログラミングでよく使われる場面です。
- ユーザー入力処理: 文字列を数値に変換
- ファイル処理: CSVデータの型変換
- 計算結果表示: 適切な形での出力
- データ分析: 型の統一と変換
安全な使い方
エラーを避けるためのコツです。
- 事前チェック: isdigit()などで検証
- エラーハンドリング: try-except文を活用
- デフォルト値: 変換失敗時の代替値設定
- ユーザーへの案内: わかりやすいエラーメッセージ
型変換は、Pythonプログラミングの基本中の基本です。
まずは簡単なstr()、int()、float()から始めて、徐々にエラーハンドリングも含めた安全な処理にも挑戦してみてください!