我是 Python 初学者,正在使用 PyCharm 进行练习。
输入以下代码后:
promotion_percentage = int(input('Enter a integer from 1 to 100: '))
然后会产生错误:
ValueError: invalid literal for int() with base 10: ''
我在论坛上读了很多问答。但他们的案子看起来比我的更复杂。
错误从何而来?
最佳答案
您正在尝试转换非整数的内容。当我输入任何字母字符时,我可以重现该问题。
查看正在发生的情况的一种更简单的方法是将输入设为自己的变量并单步执行调试器。
尝试这样的事情,看看在断言之前打印了什么。
var = input('Enter a integer from 1 to 100: ')
print(repr(var), type(var))
assert var.isalnum(), "var should be only numbers"
promotion_percentage = int(var)
print(promotion_percentage, type(promotion_percentage))
请注意,当我仅输入数字时,您的代码可以正常工作。
Enter a integer from 1 to 100: 234
'234' <class 'str'>
234 <class 'int'>
但是当我给它一个非整数时......
Enter a integer from 1 to 100: abc
'abc' <class 'str'>
Traceback (most recent call last):
ValueError: invalid literal for int() with base 10: 'abc'
为了解释您具体收到的错误,您的输入是一个空字符串。当您按下 Enter 键而不输入任何内容时,就会发生这种情况。在这种情况下,我会遵循此post的建议.
var = input('Enter a integer from 1 to 100: ')
print(repr(var), type(var))
assert var.isalnum(), "var should be only numbers"
if not var:
# ask them again?
# exit script?
# set a default value?
关于Python _ValueError : invalid literal for int() with base 10: _very weird,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541490/