我从我的代码中得到这个错误:

ValueError: invalid literal for int() with base 10: ''.

这是什么意思?为什么会发生这种情况,我该如何解决呢?


当前回答

给定floatInString = '5.0',该值可以像这样转换为int:

floatInInt = int(float(floatInString))

其他回答

当您必须将空格分隔的整数映射到一个列表,但您使用.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

我正在创建一个程序,读取 文件和if文件的第一行 是不是空白,它读下四个 行。计算在 这些线,然后下一条线是 阅读。

像这样的东西应该工作:

for line in infile:
    next_lines = []
    if line.strip():
        for i in xrange(4):
            try:
                next_lines.append(infile.next())
            except StopIteration:
                break
    # Do your calculation with "4 lines" here

因为这一行,你的答案是抛出错误

readings = int(readings)

在这里,您试图将字符串转换为int类型,而不是以10为基数。你只能将一个以10为基数的字符串转换为int,否则它将抛出ValueError,声明以10为基数的int()的无效字面量。

你对这句话有问题:

while file_to_read != " ":

这不会找到空字符串。它找到一个由一个空格组成的字符串。想必这不是你要找的。

听取别人的建议。这不是非常地道的python代码,如果直接遍历文件,就会清楚得多,但我认为这个问题也值得注意。