我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
当前回答
当您必须将空格分隔的整数映射到一个列表,但您使用.input()逐行输入整数时,也会发生这种情况。 例如,我在HackerRank Bon-Appetit上解决这个问题,在编译时得到了以下错误
因此,不要逐行向程序输入,而是尝试使用map()方法将空格分隔的整数映射到列表中。
其他回答
Int不能将空字符串转换为整数。如果输入字符串可以是空的,考虑检查这种情况:
if data:
as_int = int(data)
else:
# do something else
或者使用异常处理:
try:
as_int = int(data)
except ValueError:
# do something else
错误消息意味着提供给int的字符串不能被解析为整数。在:后面的部分显示了所提供的字符串。
在问题中描述的情况下,输入是一个空字符串,写为“。
下面是另一个例子——表示浮点值的字符串不能直接用int转换:
>>> int('55063.000000')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '55063.000000'
相反,先转换为float:
>>> int(float('55063.000000'))
55063
给定floatInString = '5.0',该值可以像这样转换为int:
floatInInt = int(float(floatInString))
因为这一行,你的答案是抛出错误
readings = int(readings)
在这里,您试图将字符串转换为int类型,而不是以10为基数。你只能将一个以10为基数的字符串转换为int,否则它将抛出ValueError,声明以10为基数的int()的无效字面量。
原因是你得到了一个空字符串或者一个字符串作为int的参数。检查它是否为空或包含alpha字符。如果它包含字符,那么就忽略这部分。