首页 > 解决方案 > 我得到了:IndexError: list index out of range,但我不知道为什么而且它不会影响输出

问题描述

我正在制作一个程序来平均来自外部 .txt 文件的数字差异。我写了这个,突然我得到一个索引错误。我想我知道这个的意思,索引不存在。不知道哪里错了。。。

此外,错误出现很奇怪,并被其他输出(打印)打断,我不知道为什么会发生这种情况......

清单在这里:

111
222
333
444
555
666
777
888
999

代码:

file = open("list", "r")
lst = file.read().split("\n")

index = 0

for i in lst:
    num1 = lst[index]

    index += 1

    num2 = lst[index]

    print("NUM1:" + str(num1))
    print("NUM2:" + str(num2))

    dif = int(num2) - int(num1)

    print(dif)

输出看起来没有错误的任何影响......

Traceback (most recent call last):  
NUM1:111  
  File "FILE_LOCATION", line 11, in <module>  
NUM2:222  
    num2 = lst[index]  
111  
IndexError: list index out of range  
NUM1:222  
NUM2:333  
111  
NUM1:333  
NUM2:444  
111  
NUM1:444  
NUM2:555  
111  
NUM1:555  
NUM2:666  
111  
NUM1:666  
NUM2:777  
111  
NUM1:777  
NUM2:888  
111  
NUM1:888  
NUM2:999  
111  

Process finished with exit code 1  

还有一件事:错误是不可预测的,并且总是出现在不同的地方。有时完全在开头,有时在结尾,有时在整个输出中。

标签: pythonpython-3.xindex-error

解决方案


对于每个元素,您检查当前元素和下一个元素之间的差异。但是,最后一个元素没有下一个元素,因此出现错误。

您在输出之前看到错误的原因可能是由于输出进入标准输出而错误进入标准错误,这是两个不同的流,当您的应用程序崩溃时它们会同时刷新。

输出似乎没有受到影响,因为您应该在最后一个元素处停止,但您没有,因此程序在打印完所有内容后崩溃。


推荐阅读