我有以下代码:
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 ;。这里发生了什么?
答案 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)