外部ファイルからの読み込みやユーザー入力で得られたデータは、最初はすべて「文字列(str)」として扱われます。これらを計算に使用するためには、適切な数値型(int または float)に変換する必要があります。
この記事では、基本的な変換方法と、変換エラーを防ぐためのチェック関数の実装について解説します。
目次
1. 文字列を整数に変換する: int()
文字列を整数(integer)に変換するには、組み込み関数の int() を使用します。
構文:
数値変数 = int(文字列)
基本的な使用例
text = "1222"
# 文字列を整数に変換
num = int(text)
print(f"値: {num}")
print(f"型: {type(num)}")
実行結果:
値: 1222
型: <class 'int'>
注意点:小数の文字列は直接変換できない
int() 関数に、小数点の入った文字列(例: "1.2")を渡すと ValueError が発生します。
# これはエラーになります
# int("1.2")
# -> ValueError: invalid literal for int() with base 10: '1.2'
文字列が小数の形式をしている場合は、一度 float() で変換してから int() にキャストするか、最初から float として扱う必要があります。
2. 文字列を浮動小数点数に変換する: float()
文字列を小数(floating point number)に変換するには、組み込み関数の float() を使用します。
構文:
数値変数 = float(文字列)
基本的な使用例
text = "3.14159"
# 文字列を浮動小数点数に変換
num = float(text)
print(f"値: {num}")
print(f"型: {type(num)}")
実行結果:
値: 3.14159
型: <class 'float'>
3. 変換可能かチェックする(安全な変換)
数値以外の文字列(例: "abc")を変換しようとすると、プログラムはエラーで停止してしまいます。 これを防ぐために、「変換を試みて、失敗したらFalseを返す」という関数を作成するのが一般的です。
Pythonには isdigit() などのメソッドもありますが、これらは「マイナス符号」や「小数点」に対応していない場合があるため、try-except ブロックを使用する方法が最も確実です。
判定関数の実装例
def is_int(val):
"""
整数に変換可能か判定する関数
"""
try:
# 実際に変換を試みる
int(val)
return True
except ValueError:
# 変換できなければ False を返す
return False
def is_float(val):
"""
浮動小数点数に変換可能か判定する関数
"""
try:
float(val)
return True
except ValueError:
return False
# --- 動作確認 ---
# 整数の判定
print(f"'3' は整数ですか?: {is_int('3')}") # True
print(f"'3.5' は整数ですか?: {is_int('3.5')}") # False (int("3.5")はエラーになるため)
print(f"'abc' は整数ですか?: {is_int('abc')}") # False
# 小数の判定
print(f"'23.2' は小数ですか?: {is_float('23.2')}") # True
print(f"'abc' は小数ですか?: {is_float('abc')}") # False
実行結果:
'3' は整数ですか?: True
'3.5' は整数ですか?: False
'abc' は整数ですか?: False
'23.2' は小数ですか?: True
'abc' は小数ですか?: False
まとめ
int(str): 整数形式の文字列を変換します。小数形式(”1.2″)を渡すとエラーになります。float(str): 小数形式の文字列を変換します。- 変換チェック:
try-except ValueErrorを使用して、実際に変換できるか試す方法が最も安全で汎用的です。
