在python 3中制作数字排序系统,但出现错误("ValueError: invalid literal for int() with base 10: ")



当这个程序打开一个包含数字的文件并按顺序打印它们时,我一直在处理其中的一件事。文件NewFile.txt包含

1
2
3
8
3
6
1
8
3
9
10

它应该做的是去想每一行都把它设置为一个变量,然后把它按顺序排列,但我一直得到错误

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

此时此刻,输入分数位是无用的。

这是迄今为止的代码:

Test = (input("Enter Score: "))
ffs = open("NewFile.txt", "r+")
p = 0
for i in range(1, 10):# numbers going to fine
    for u in range (1, 10):#lines Going to read
       p = (p+1)
       a = int(ffs.readline())
       if a == i:
           print (a)

file.readline()在完成读取时返回一个空字符串。空字符串不能转换为整数。

您已到达文件末尾,因为您正试图读取81次;外循环运行9次,内循环运行9个,得到9*9==81次迭代。你的文件中没有那么多行。

你可能只需要将文件读取到一个列表中:

with open("NewFile.txt", "r+") as ffs:
    numbers = [int(line) for line in ffs]

或者在输入文件中的所有行中循环一次,并在读取数字时处理数字:

with open("NewFile.txt", "r+") as ffs:
    for line in ffs:
        number = int(line)

您仍然可以在此处遇到为空的行;你可以用if line.strip():测试一下。

相关内容

最新更新