Python _ValueError : invalid literal for int() with base 10: _very weird

标签 python

我是 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/

相关文章:

Python 3 范围与 Python 2 范围

python - 我可以在 VS Code 中拥有多个具有虚拟 python 环境的子文件夹吗?

python - 将 float 中的点向下移动

Python 调度程序未运行导入中调度的函数

Python 看门狗子进程队列

python - 如何有效地切片memmap?

python - 在遇到换行符或逗号时拆分/删除一组行

用于定义分隔符的 Python 单击参数导致 CSV 错误 "delimiter"必须是 1 个字符的字符串

python - 无法理解 numpy.random.RandomState

python - Python 正则表达式中的错误? (re.sub with re.MULTILINE)