Почему моя программа на Python выдает ошибку времени выполнения на интерпретаторе Kattis?

Когда я отправляю этот файл в Kattis, я получаю Run Time Error без дальнейших объяснений. Кажется, это достаточно простой код, но, может быть, я что-то упускаю

Он работает на моем интерпретаторе Python 3. Почему это не работает на Каттис? (или, может быть, другой переводчик)

Проблема: https://open.kattis.com/problems/babelfish

dictionary = dict()
userInput = input()
while userInput != "":
    buf = userInput.split()

    english = buf[0]
    foreign = buf[1]

    dictionary[foreign] = english
    userInput = input()


userInput = input()
while userInput != "":
    if userInput in dictionary:
        print(dictionary.get(userInput))
    else:
        print("eh")

    userInput = input()

1 ответ

Решение

Я думаю, проблема в том, что входные данные не получаются с помощью функции input(), как вы делаете. Вы должны прочитать стандартный ввод, вот так:

for i in sys.stdin:
    ab = i.split()
    a = int(ab[0])
    b = int(ab[1])
    # Solve the test case and output the answer

Документация Kattis на Python3

Каттис рекомендует sys.stdinдля чтения входных данных. Однако вполне нормально использоватьinput() также.

Условие прерывания для второго цикла while не работает в вашем коде. В то время как есть пустая строка, говорящая о завершении первого блока, для второго блока нет.

После того, как input() перехватит последние данные из потока, вы все еще пытаетесь получить больше данных с помощью: userInput = input()в следующем цикле. Таким образом, бросаяEOFError, который вы можете поймать, чтобы получить условие разрыва:

while True:
    try:
        userInput = input()
    except EOFError:
        break
Другие вопросы по тегам