Почему моя программа на 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
Каттис рекомендует sys.stdin
для чтения входных данных. Однако вполне нормально использоватьinput()
также.
Условие прерывания для второго цикла while не работает в вашем коде. В то время как есть пустая строка, говорящая о завершении первого блока, для второго блока нет.
После того, как input() перехватит последние данные из потока, вы все еще пытаетесь получить больше данных с помощью: userInput = input()
в следующем цикле. Таким образом, бросаяEOFError
, который вы можете поймать, чтобы получить условие разрыва:
while True:
try:
userInput = input()
except EOFError:
break