ホーム ›
エラー解決 › Python › ValueError(int変換)
Python ERROR
Python ValueError: invalid literal for int() の原因と解決法
int()に「整数として解釈できない文字列」を渡すと発生するエラーです。カンマ入りの数字や空文字が典型的な原因です。
このエラーメッセージ
ValueError: invalid literal for int() with base 10: '1,000'
原因
- 「1,000」のようにカンマ付きの文字列を変換している
- 空文字列や空白だけの文字列を変換している
- 「3.14」のような小数の文字列をint()に直接渡している
❌ エラーになるコード
NG
price = "1,000"
number = int(price)
print(number * 2)
✅ 修正したコード
OK
price = "1,000"
number = int(price.replace(",", ""))
print(number * 2)
▶ 修正済みコードを実行エディタで開く
progoのPython実行環境(インストール不要・登録不要)でその場で動作を確認できます。
解決のポイント
変換前に文字列を整数として読める形に整えます。カンマはreplace(",", "")で除去、前後の空白はstrip()で除去します。小数の文字列はint(float("3.14"))のように一度floatを経由します。ユーザー入力を扱う場合はtry-exceptでValueErrorを捕捉すると安全です。
よくある質問
変換できるか事前に調べる方法は?
s.isdigit()で数字だけかを確認できます。ただし負の数や小数には使えないため、確実なのはtry-exceptです。
float()でも同じエラーが出る?
はい。float("abc")も同じValueErrorになります。対処の考え方は同じです。