我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
当前回答
这似乎读数有时是一个空字符串,显然会出现错误。 你可以在你的while循环的int(读数)命令之前添加一个额外的检查,比如:
while readings != 0 or readings != '':
readings = int(readings)
其他回答
以下代码在Python中运行良好:
>>> int('5') # passing the string representation of an integer to `int`
5
>>> float('5.0') # passing the string representation of a float to `float`
5.0
>>> float('5') # passing the string representation of an integer to `float`
5.0
>>> int(5.0) # passing a float to `int`
5
>>> float(5) # passing an integer to `float`
5.0
然而,传递浮点数的字符串表示形式,或任何其他不表示整数的字符串(包括,例如,像"这样的空字符串)将导致ValueError:
>>> int('')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''
>>> int('5.0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5.0'
要将浮点数的字符串表示形式转换为整数,首先转换为浮点数,然后转换为整数(正如@katyhuff对问题的评论中所解释的那样):
>>> int(float('5.0'))
5
当您必须将空格分隔的整数映射到一个列表,但您使用.input()逐行输入整数时,也会发生这种情况。 例如,我在HackerRank Bon-Appetit上解决这个问题,在编译时得到了以下错误
因此,不要逐行向程序输入,而是尝试使用map()方法将空格分隔的整数映射到列表中。
原因是你得到了一个空字符串或者一个字符串作为int的参数。检查它是否为空或包含alpha字符。如果它包含字符,那么就忽略这部分。
我对这个问题的简单解决方法是将我的代码包装在if语句中,利用空字符串不是“真”的事实:
给定这两个输入中的任意一个:
input_string = "" # works with an empty string
input_string = "25" # or a number inside a string
你可以使用这个检查安全地处理一个空白字符串:
if input_string:
number = int(input_string)
else:
number = None # (or number = 0 if you prefer)
print(number)
这似乎读数有时是一个空字符串,显然会出现错误。 你可以在你的while循环的int(读数)命令之前添加一个额外的检查,比如:
while readings != 0 or readings != '':
readings = int(readings)