Cómo obtener entradas multilínea del usuario [duplicado]
Quiero escribir un programa que obtenga entradas de varias líneas y trabajar con él línea por línea. ¿ Por qué no hay ninguna función como raw_input
en Python 3?
input
no permite al usuario poner líneas separadas por nueva línea ( Enter). Imprime solo la primera línea.
¿Se puede almacenar en una variable o incluso leerlo en una lista?
raw_input
puede manejar correctamente el EOF, por lo que podemos escribir un bucle, leer hasta que hayamos recibido un EOF (Ctrl-D) del usuario:
Pitón 3
print("Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it.")
contents = []
while True:
try:
line = input()
except EOFError:
break
contents.append(line)
Pitón 2
print "Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it."
contents = []
while True:
try:
line = raw_input("")
except EOFError:
break
contents.append(line)
En Python 3.x, el raw_input()
de Python 2.x ha sido reemplazado por input()
función. Sin embargo, en ambos casos no puede ingresar cadenas de varias líneas, para ello necesitaría obtener la entrada del usuario línea por línea y luego .join()
usarla \n
, o también puede tomar varias líneas y concatenarlas usando +
el operador separado por\n
Para obtener entradas de varias líneas del usuario, puede hacer lo siguiente:
no_of_lines = 5
lines = ""
for i in xrange(no_of_lines):
lines+=input()+"\n"
print(lines)
O
lines = []
while True:
line = input()
if line:
lines.append(line)
else:
break
text = '\n'.join(lines)