python - 我得到了: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
还有一件事:错误是不可预测的,并且总是出现在不同的地方。有时完全在开头,有时在结尾,有时在整个输出中。
解决方案
对于每个元素,您检查当前元素和下一个元素之间的差异。但是,最后一个元素没有下一个元素,因此出现错误。
您在输出之前看到错误的原因可能是由于输出进入标准输出而错误进入标准错误,这是两个不同的流,当您的应用程序崩溃时它们会同时刷新。
输出似乎没有受到影响,因为您应该在最后一个元素处停止,但您没有,因此程序在打印完所有内容后崩溃。
推荐阅读
- python-3.x - 如何使用 Openpyxl 访问 Onedrive 上的 Excel 文件
- swift - 带有表情符号的快速光标位置
- java - Spring MongoDB - 使用抽象/密封类字段
- javafx - JavaFX如何将节点居中到ImageView(使用setPreserveRation == true)?
- ios - 拖放过程中获取titleLabel
- angular - Angular 6 Universal Application 代码未显示在视图源中
- python - 从 JSON 字段中拆分字符串值并分配给 YAML 映射
- laravel-5 - 我的路由或控制器列出属于给定语言标识符的资源有什么问题?
- laravel - Laravel carbon 和 subDays
- python - 如何使用 Facebook 的 TargetingSearch API 进行复杂查询?