MeWrite Docs

ValueError: invalid literal for int()

数値に変換できない文字列をint()で変換しようとした場合に発生

概要

ValueErrorは、関数に渡された引数の型は正しいが、値が不適切な場合に発生します。特にint()やfloat()での文字列変換でよく発生します。

エラーメッセージ

ValueError: invalid literal for int() with base 10: 'abc'

原因

  1. 数字以外の文字列を変換: アルファベットや記号を含む文字列
  2. 空文字列: 空の文字列をint()で変換
  3. 小数点を含む文字列をint()で変換: “3.14"などの文字列

解決策

1. try-exceptでエラーハンドリング

1
2
3
4
5
6
7
def safe_int(value, default=0):
    try:
        return int(value)
    except ValueError:
        return default

result = safe_int("abc")  # 0が返る

2. 事前にバリデーション

1
2
3
4
5
6
user_input = input("数字を入力: ")

if user_input.isdigit():
    number = int(user_input)
else:
    print("有効な数字を入力してください")

3. 小数点を含む場合はfloat()を使用

1
2
3
4
5
# 悪い例
value = int("3.14")  # ValueError

# 良い例
value = int(float("3.14"))  # 3

4. 正規表現でバリデーション

1
2
3
4
5
6
7
import re

def is_valid_number(s):
    return bool(re.match(r'^-?\d+$', s))

if is_valid_number(user_input):
    number = int(user_input)

Python の他のエラー

最終更新: 2025-12-09