Solución:
Puedes usar sys
módulo:
import sys
complete_input = sys.stdin.read()
sys.stdin es un objeto similar a un archivo que puede tratar como un objeto de archivo Python.
De la documentación:
La ayuda sobre la función incorporada lee:
read (size = -1, /) método de instancia _io.TextIOWrapper Lee como máximo n caracteres de la secuencia.
Read from underlying buffer until we have n characters or we hit EOF. If n is negative or omitted, read until EOF.
Puede leer la entrada desde la consola hasta el final del archivo usando sys
y os
módulo en python. He utilizado estos métodos en jueces en línea como SPOJ varias veces.
Primer método (recomendado):
from sys import stdin
for line in stdin:
if line == '': # If empty string is read then stop the loop
break
process(line) # perform some operation(s) on given string
Tenga en cuenta que habrá un carácter de línea final n
al final de cada línea que lea. Si desea evitar imprimir 2 caracteres de línea final mientras imprime line
usar print(line, end='')
.
Segundo método:
import os
# here 0 and 10**6 represents starting point and end point in bytes.
lines = os.read(0, 10**6).strip().splitlines()
for x in lines:
line = x.decode('utf-8') # convert bytes-like object to string
print(line)
Este método no funciona en todos los jueces en línea, pero es la forma más rápida de leer la entrada de un archivo o consola.
Tercer método:
while True:
line = input()
if line == '':
break
process(line)
reemplazar input()
con raw_input()
si eres todavía usando Python 2.
Para las plataformas HackerRank y HackerEarth, se prefiere la siguiente implementación:
while True:
try :
line = input()
...
except EOFError:
break;