IndexError:列表索引超出范围,仅在执行操作2列表项时 - Python

时间:2017-07-28 07:26:35

标签: python list

我有以下代码:

infile = open("sitin.txt", "r")
r = int(infile.readline().split()[0])
s = int(infile.readline().split()[1])
totalseats = r * s
print(totalseats)

我的输入文件," sitin.txt"是一个只有10 10的文本文件。打印r或s本身会返回正确的值,并且打印r或s乘以10会返回正确的值,但是此代码尝试乘以r和s返回" IndexError:列表索引超出范围&#34 ;。这里发生了什么?

3 个答案:

答案 0 :(得分:3)

你读了很多次输入文件;第一行你会得到r; s为第二行(依此类推)...修复:

infile = open("sitin.txt", "r")
split = infile.readline().split()  # read once only!
r = int(split[0])
s = int(split[1])
totalseats = r * s
print(totalseats)

您可能需要检查split是否有正确的输入格式。

答案 1 :(得分:0)

每当你的readline(),“光标”移动到下一行。因此,您应该只读取该行一次或向后移动偏移量。试着这样做:

infile = open("sitin.txt", "r")
t = infile.readline().split()
r = int(t[0])
s = int(t[1])
totalseats = r * s
print(totalseats)

答案 2 :(得分:0)

您似乎正在执行readline()两次,这将会读取两行。做一次,抓住结果,分开。此外,有助于将您的文件访问权限放在with中,以便在阅读后文件自动关闭,而不是作为悬空资源保持打开状态。 E.g:

with open("sitin.txt", "r") as infile:
    line = infile.readline()
r, s = map(int, line.split())
totalseats = r * s
print(totalseats)