Me gustaría separar la entrada con una línea en blanco, repetir la lectura de la entrada hasta que se reciban 2 líneas en blanco. Aquí está el formato de entrada esperado:

A
B
C

A B 2
A C 3
C B 4

A B 1


He intentado

for line in sys.stdin:
    node = [line]
    if line == ' ':
        cost = [line.split()]
        if line == ' ':
            distance = [line.split()]

Pero no puede dejar de leer la entrada con 2 líneas en blanco. ¿Algún consejo?

0
Herman 7 may. 2021 a las 09:29

1 respuesta

La mejor respuesta

Este es un ciclo muy simple que almacena cualquier entrada que proporciones en lines

Cuando las últimas 2 líneas están vacías, es decir, lines[-1]==lines[-2]=="" luego se rompe; [solo asegúrese de haber tomado al menos 2 entradas del usuario, así que verifique len(lines)>2]

lines = []
while True:
    inp = input()
    lines.append(inp.strip())
    if len(lines)>2 and lines[-1]==lines[-2]=="":
        break
print('\n'.join(lines))
A
B
C

A B 2
A C 3
C B 4

A B 1


Si no quiere almacenar todas las líneas

lines = ['temp', 'temp']
while True:
    inp = input()
    lines[-2], lines[-1] = lines[-1], inp.strip() # this changes the second last element by last one and the last one is updated to the new line that is entered
    if lines[-1]==lines[-2]=="":
        break
2
Kuldeep Singh Sidhu 7 may. 2021 a las 06:34