Crea una animación con efecto de máquina de escribir para cadenas en Python

Al igual que en las películas y en los juegos, la ubicación de un lugar aparece en la pantalla como si se escribiera en vivo. Quiero hacer un juego sobre escapar de un laberinto en Python. Al comienzo del juego, proporciona la información de fondo del juego:

line_1 = "You have woken up in a mysterious maze" line_2 = "The building has 5 levels" line_3 = "Scans show that the floors increase in size as you go down" 

Bajo las variables, intenté hacer un bucle for para cada línea similar a esto:

 from time import sleep for x in line_1: print (x) sleep(0.1) 

El único problema con esto es que imprime una letra por línea. El momento es correcto, pero ¿cómo puedo hacer que se coloque en una línea?

Debido a que etiquetó su pregunta con python 3, le proporcionaré una solución a python 3:

  1. Cambie su carácter final de impresión a una cadena vacía: print(..., end='')
  2. Agregue sys.stdout.flush() para que se imprima instantáneamente (porque la salida está en búfer)

Código final:

 from time import sleep import sys for x in line_1: print(x, end='') sys.stdout.flush() sleep(0.1) 

Hacerlo al azar también es muy simple.

  1. Añadir esta importación:

     from random import uniform 
  2. Cambia tu llamada de sleep a lo siguiente:

     sleep(uniform(0, 0.3)) # random sleep from 0 to 0.3 seconds 
 lines = ["You have woken up in a mysterious maze", "The building has 5 levels", "Scans show that the floors increase in size as you go down"] from time import sleep import sys for line in lines: # for each line of text (or each message) for c in line: # for each character in each line print(c, end='') # print a single character, and keep the cursor there. sys.stdout.flush() # flush the buffer sleep(0.1) # wait a little to make the effect look good. print('') # line break (optional, could also be part of the message) 

Para iterar sobre las líneas, cambie el bucle a:

 for x in (line_1, line_2, line_3): 

Puede cambiar el carácter de final de línea que se agrega automáticamente al imprimir con la print("", end="") . Para imprimir foobar , puedes hacer esto:

 print("foo", end="") print("bar", end="") 

De la documentación :

Todos los argumentos que no son de palabras clave se convierten en cadenas como hace str () y se escriben en la secuencia, separados por sep y seguidos por el final. Tanto el sep como el final deben ser cuerdas; también pueden ser Ninguno, lo que significa usar los valores predeterminados.