On 2023-05-26 09:29, Chris Angelico wrote:
On Fri, 26 May 2023 at 17:56, Roel Schroeven <r...@roelschroeven.net> wrote:

Kevin M. Wilson's post "Invalid literal for int() with base 10?" got me
thinking about the use of the word "literal" in that message. Is it
correct to use "literal" in that context? It's correct in something like
this:

 >>> int('invalid')
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'invalid'

But something like this generates the same message:

 >>> int(input())
hello
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'hello'

In cases like this there is no literal in sight.

I'm thinking it would be more correct to use the term 'value' here:
ValueError: invalid value for int() with base 10: 'hello'
Does my reasoning make sense?


It's a ValueError, so the problem is with the value. I suppose
"invalid notation" might work, but since the definition of what's
acceptable to the int() constructor is the same as for a Python
literal, it's not wrong to use that word.

However, if you want to change the wording, I'd be more inclined to
synchronize it with float():

float("a")
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'a'

You still need to mention the base because:

>>> int('y', 36)
34

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to