Вы можете использовать регулярные выражения для этого, и это делает это намного проще. Смотрите вопрос: python: многострочное регулярное выражение
В вашем случае попробуйте это:
import re
s = open("input.txt","r").read()
(inputs,outputs) = zip(*re.findall(r"Input-(?P<input>.*)\nOutput-(?P<output>.*)\n",s))
и затем split(",")
каждый выходной элемент в соответствии с требованиями
Если вы сделаете это таким образом, вы получите преимущество, заключающееся в том, что вам не нужна первая строка во входном файле, поэтому вам не нужно заранее указывать, сколько записей у вас есть.
Вы также можете убрать распаковку (это zip(*...)
) из кода выше, а затем вы можете обрабатывать каждый вход и выводить пару одновременно. Я предполагаю, что это именно то, что вы пытаетесь сделать.
РЕДАКТИРОВАТЬ Хотел дать вам полный пример того, что я имел в виду именно тогда. Я предполагаю, что это для сценария тестирования, поэтому я бы сказал, использовать мощь итератора сопоставления с образцом, чтобы помочь сделать ваш код короче и проще:
for (input,output) in re.findall(r"Input-(?P<input>.*)\nOutput-(?P<output>.*)\n",s):
expectedResults = output.split(",")
testResults = runTest(input)
// compare testResults and expectedResults ...