まず結論
invalid literal for int() は、int() が整数に変換できない文字を受け取ったときに出ます。
number = int("abc")
"abc" は整数にできないので、エラーになります。
こんなときに読む記事です
次のようなエラーで止まった人向けです。
ValueError: invalid literal for int() with base 10
長く見えますが、「この文字列は整数に変換できません」という意味です。
input()でよく起きる
input() の結果を int() に渡すときによく出ます。
age = int(input("年齢は?"))
print(age + 1)
ここで 12 と入力すれば動きます。
でも 十二 や 12歳 と入力すると、整数に変換できずエラーになります。
小数もそのままでは無理
int() は整数用です。
number = int("3.5")
このコードもエラーになります。
小数を扱いたいなら float() を使います。
number = float("3.5")
print(number)
空文字にも注意
何も入力せずEnterを押すと、空文字 "" になります。
number = int("")
これも整数にできないためエラーです。
読み方のコツ
ValueError と int() が一緒に出たら、「変換しようとした文字が数字として読めなかった」と考えます。
入力値に文字、単位、小数点、空白が混ざっていないか確認すると直しやすいです。
3行まとめ
- int()は整数に変換できる文字列だけ処理できる。
- 文字や小数点、単位が混ざるとValueErrorになる。
- input()の値を変換するときによく出る。