Python错误消息ValueError:基为10的int()的文本无效:“”

2024-04-20 16:18:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我从文件中读取数据,都是数字。 我想把它改成int,然后显示这个错误消息。 我试图使用strip('\n'),但仍然得到这个错误。在

^{pr2}$

这是我的输入文件

1958
1703200
1375035
978400
1962
1813500
1446593
971706
1966
1869400
1472054
987134
1970
2078000
1562916
1123000
1974
2419000
1896214
1044425
1978
2651000
1960900
1028854
1982
3119000
2105563
1404831
1986
3307000
2230354
1358160
1990
3650000
2225101
1362651
1994
4000000
2896519
1733471
1998
4257000
3119562
1939421
2002
4519000
3209648
1808720
2006
4821000
3264511
2107370
2010
5149729
3601268
2565589

Tags: 文件消息forbase错误with数字读取数据
2条回答

你的文件有一个空行(可能是最后一行?)。无法转换为int

不管怎样,还有很多其他的事情需要更正,我怀疑你发布的代码应该会引发很多异常。在

问题是你一直在检查第一行:

line = infile.readline()
    while line !='':

此条件永远不会计算为False,并且循环将无限期地继续运行,因为在while循环中没有更新该条件。在

比较:

^{pr2}$

这个循环将永远运行,除非您在循环中的某个地方修改num(例如num -= 1)。在

在本例中,循环输入,直到readline()到达文件末尾并返回空字符串。空字符串''无法转换为整数,显然,这就是为什么会出现错误。在

为了解决这个问题,我将在开头使用try ... except ...块:

while True:
    try:
        year = int(infile.readline())
    except ValueError:
        break

这将确保循环在没有数据可供读取时结束。在


至于你的其他错误,以下是一些提示:

  • 寻找需要是字符串但却是整数的变量(如year
  • 检查未定义的全局变量(big_year?)在
  • Readability counts,所以把空格放在它们所属的地方,这样调试就容易多了
  • 转义百分比%加倍:%%

相关问题 更多 >