¿Cómo puedo evitar que Python inserte una nueva línea después de recibir información del usuario?

Python inserta una línea en blanco en la salida de la consola entre todas las llamadas de la función input() , pero no quiero que (es decir, quiero que las indicaciones input() estén en líneas contiguas en la consola en lugar de estar separadas por una línea en blanco) . ¿Hay una manera de hacerlo? Intenté usar input("foo", end="") pensando que podría funcionar como la función print() pero ese no es el caso …

Código:

 fname = input("Please enter your first name: ") lname = input("Please enter your last name: ") print("Pleased to meet you, " + str(fname) + " " + str(lname) + "!") 

Salida:

 Please enter your first name: Jane Please enter your last name: Doe Pleased to meet you, Jane Doe! 

Salida deseada:

 Please enter your first name: Jane Please enter your last name: Doe Pleased to meet you, Jane Doe! 

Editar:

Como otros lo han señalado en la sección de comentarios, este problema no es reproducible, incluso para mí, excepto a través del uso de la interfaz IPython dentro del IDE de Spyder. Si alguien está ejecutando IPython fuera de Spyder, ejecute el código anterior y avíseme si eso produce el mismo resultado. Puedo reproducir la salida no deseada a través de la interfaz IPython de Spyder pero no a través de una sesión de Terminal, por lo que esto es algo específico de IPython o Spyder.

( Desarrollador de Spyder aquí ) Esto parece un error menor en nuestra consola IPython. Por favor informe aquí:

https://github.com/jupyter/qtconsole

Nota : esta consola no está simplemente incrustando una sesión de IPython de terminal en Spyder (por eso hacer comparaciones no tiene ningún sentido).

En su lugar, es una reimplementación de la mayor parte del comportamiento del terminal, pero utilizando un kit de herramientas gráficas (llamado Qt) y la architecture de núcleo / frontend de Jupyter.

Quizás no sea exactamente lo que está buscando, pero debería resolver su problema.

Eliminar la línea anterior en la consola con:

 def delete_previous_line(): CURSOR_UP_ONE = '\x1b[1A' ERASE_LINE = '\x1b[2K' print(CURSOR_UP_ONE + ERASE_LINE + CURSOR_UP_ONE) fname = input("Please enter your first name: ") delete_previous_line() lname = input("Please enter your last name: ") print("Pleased to meet you, " + str(fname) + " " + str(lname) + "!") 

Ver el último STDOUT remoto .

Si no funciona inténtalo.

 print(CURSOR_UP_ONE + ERASE_LINE) 

en lugar de

 print(CURSOR_UP_ONE + ERASE_LINE + CURSOR_UP_ONE) 

No hay líneas extra vacías en la consola de Windows Vista.

Las líneas vacías adicionales se insertan en Spyder cuando se elige “ejecutar en la consola actual”.

Estas líneas adicionales NO se insertan si el progtwig se ejecuta en “consola dedicada”. (Python 3.6, Spyder 3.2.3, IPython 5.3.0)

Spyder -> Ejecutar -> Configuración por archivo … -> Ejecutar en consola dedicada

(2017/10/16, Anaconda de 32 bits en MS Windows Vista de 32 bits.)