Почему этот код Python выдает ошибку выполнения, когда я пытаюсь загрузить его на kattis?

Я все время получаю сообщение об ошибке выполнения при попытке загрузить это задание на kattis: https://open.kattis.com/problems/qaly

Я уже читал документацию по python от kattis и изменил ввод на sys.stdin. Вот что я пытаюсь загрузить:

QALY = 0
for i in range(1, int(sys.stdin[0])+1):
    QALY += float(sys.stdin[i].split(" ")[0])*float(sys.stdin[i].split(" ")[1])
print(QALY)

Когда я пробую использовать этот код в pycharm, он работает:

f=open("/Users/lottehurkens/PycharmProjects/kattis/1.in", "r")
r = f.readlines()
QALY = 0
for i in range(1, int(r[0])+1):
    QALY += float(r[i].split(" ")[0])*float(r[i].split(" ")[1])
print(QALY)

1 ответ

Ошибка, скрытая Каттис, заключается в следующем:

Traceback (most recent call last):
  File "main.py", line 5, in <module>
    for i in range(1, int(sys.stdin[0])+1):
TypeError: '_io.TextIOWrapper' object is not subscriptable

Вы не можете использовать скобки на _io.TextIOWrapper объект как sys.stdin для получения определенного элемента ввода, потому что он не реализует __getitem__.

Вы можете использовать input() чтобы получить одну строку ввода или вы можете преобразовать sys.stdin в список строк с sys.stdin.readlines().

Другие вопросы по тегам