2012-02-12 18 views
18

¿Cómo se imprimiría la cadena "hello world" en una línea, pero un carácter a la vez para que haya un retraso entre la impresión de cada letra? Mis soluciones han resultado en un carácter por línea o una impresión diferida de toda la cadena a la vez. Esto es lo más cerca que he estado.¿Cómo imprimir un carácter a la vez en una línea?

import time 
string = 'hello world' 
for char in string: 
    print char 
    time.sleep(.25) 

Respuesta

27

Dos trucos aquí, es necesario utilizar una corriente para poner todo en el lugar correcto y que también tienen que vaciar el búfer corriente.

import time 
import sys 

def delay_print(s): 
    for c in s: 
     sys.stdout.write(c) 
     sys.stdout.flush() 
     time.sleep(0.25) 

delay_print("hello world") 
+5

¿Por qué la interpolación de cadenas? 'sys.stdout.write (c)' funciona bien en mi sistema. – Blair

4
import sys 
import time 

string = 'hello world\n' 
for char in string: 
    sys.stdout.write(char) 
    sys.stdout.flush() 
    time.sleep(.25) 
5

Aquí es un simple truco para Python 3, ya que se puede especificar el parámetro de la función endprint:

>>> import time 
>>> string = "hello world" 
>>> for char in string: 
    print(char, end='') 
    time.sleep(.25) 


hello world 

Que se diviertan! ¡Los resultados están animados ahora!

Cuestiones relacionadas