Как я могу работать с несколькими строками ввода? - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь вывести сумму от 1 до 12 строк, которые содержат каждые два числа, разделенных символом ''. Поскольку я не знаю, сколько строк будет введено, у меня есть бесконечный цикл, который будет прерываться, если строка пуста. Но если больше нет ввода, не будет пустого ввода, и программа застревает в функции ввода.

while True:
    line = input()
    if line:
        line = line.split(' ')
        print(str(int(line[0]) + int(line[1])))
    else:
        break

Так что после последней полученной суммы я хочу, чтобы программа остановилась. Может быть, это возможно с ограничением по времени?

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Похоже, что автоматический ввод поступает через sys.stdin. В этом случае вы можете просто читать из стандартного потока ввода напрямую. Попробуйте это:

def main():
    import sys

    lines = sys.stdin.read().splitlines()
    for line in lines:
        print(sum(map(int, line.split())))

    return 0


if __name__ == "__main__":
    import sys
    sys.exit(main())

При вводе «1 2 \ n3 4» в поток sys.stdin этот сценарий печатает 3 и 7.

0 голосов
/ 03 ноября 2019

Для случая без тайм-аута и случая, позволяющего захватывать содержимое (что обычно удобно).

Следующий код был протестирован в HACKERRANK. Я уверен, что HackerEarth - то же самое.

contents = []
while True:
    try:
        line = input()
        line = line.split(' ')
        print(str(int(line[0]) + int(line[1])))
    except EOFError:
        break
    contents.append(line)

, если вас не волнует ввод.

while True:
    try:
        line = input()
        line = line.split(' ')
        print(str(int(line[0]) + int(line[1])))
    except EOFError:
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...