Pythonで文字列を数値に変換する:int/float関数の使い方と変換可否の判定ロジック

外部ファイルからの読み込みやユーザー入力で得られたデータは、最初はすべて「文字列(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 を使用して、実際に変換できるか試す方法が最も安全で汎用的です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次