J'essaie de sortir la somme de 1 à 12 lignes qui contiennent chacune deux nombres séparés par ''. Parce que je ne sais pas combien de lignes seront entrées, j'ai une boucle sans fin, qui sera interrompue si la ligne est vide. Mais s'il n'y a plus d'entrée, il n'y aura plus d'entrée vide et le programme est bloqué dans la fonction d'entrée.

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

Donc, après la dernière somme sortie, je veux que le programme s'arrête. Peut-être que c'est possible avec une limite de temps?

0
Jonas 3 nov. 2019 à 19:03

2 réponses

Meilleure réponse

Pour le cas sans délai, et le cas vous permettant de capturer le contenu (ce qui est généralement pratique).

Le code suivant a été testé dans HACKERRANK. Je suis sûr que HackerEarth est le même.

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

Si vous ne vous souciez pas de l'entrée.

while True:
    try:
        line = input()
        line = line.split(' ')
        print(str(int(line[0]) + int(line[1])))
    except EOFError:
        break
0
Yusuf Baktir 3 nov. 2019 à 16:53

Il semble que l'entrée automatisée arrive via sys.stdin. Dans ce cas, vous pouvez simplement lire directement à partir du flux d'entrée standard. Essaye ça:

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())

Avec une entrée "1 2 \ n3 4" dans le flux sys.stdin, ce script imprime 3 et 7.

1
user10987432 3 nov. 2019 à 16:47