Visualización a través del símbolo del sistema

Esto es lo que estoy tratando de hacer, estoy usando el símbolo del sistema

import time

mess = list("StackOverflow")
def myFunc():
  for i in xrange(1000):
      for k in mess:
          print k
          time.sleep(0.1)


if __name__ == '__main__':
    myFunc()

Estoy tratando de expandir la pantalla a través del indicador de cmd. Básicamente, intente un efecto de matriz, ¿cómo hago esto?

Echa un vistazo a la captura de pantalla: http://i.imgur.com/J4p58.png

Todo lo que quiero saber es si es posible imprimir verticalmente en todas las columnas a la vez, y luego los caracteres se despliegan (no en horizontal)

preguntado el 30 de junio de 12 a las 20:06

"Estoy tratando de abarcar la pantalla a través del indicador de cmd",... ¿Qué quieres decir? -

Me refiero a que la salida debe cubrir toda la ventana de solicitud de cmd... la pantalla anterior en una línea, quiero que se repita lo mismo en toda la ventana. -

no necesitas hacer list("text")... Una cadena es iterable en python. for char in "Hello!": print(char). Si está intentando imprimir varias cadenas: for strng in ("hello", "hi", "how are you"): print(strng). -

¿Y qué tiene de malo lo que tienes ahora? ¿No funciona como se esperaba? Si es así, ¿qué tiene de malo? -

@Whiskey: Sí, debería haberlo mencionado. Creo que puedes ser SOL. Alternativamente, puede intentar usar un paquete GUI (como Tkinter o WxPython) para emular una ventana de consola... aunque en ese punto puede resultar un poco ridículo. -

2 Respuestas

De forma predeterminada, print incluye una nueva línea.
Puede especificar que no lo haga agregando una coma al final del print .

Y luego, al menos en mi sistema, te encuentras con el problema de la salida almacenada en búfer.
Así que incluí una llamada para vaciar stdout.

import sys, time

mess = "StackOverflow"
def myFunc():
  for i in xrange(1000):
      for k in mess:
          print k,
          sys.stdout.flush()
          time.sleep(0.1)

if __name__ == '__main__':
    myFunc()

Código equivalente para Python 3:

import sys, time

mess = "StackOverflow"
def myFunc():
  for i in range(1000):
      for k in mess:
          print(k, end=" ")
          sys.stdout.flush()
          time.sleep(0.1)

if __name__ == '__main__':
    myFunc()

Respondido el 30 de junio de 12 a las 20:06

Lo siento, creo que no puedo explicarlo claramente... Quiero que se cree un efecto de matriz con la cadena pasada... la cadena es "Stackoverflow", quiero ssssstttttattttccccck kkkkooooo ......... y así sucesivamente... todo al mismo tiempo cayendo... a través de la ventana - Whisky

Por favor, echa un vistazo a esto.. i.imgur.com/J4p58.png Quiero que los caracteres caigan verticalmente de arriba a abajo... todos a la vez... - Whisky

está bien. Gracias por la aclaración. El código que publiqué produce el resultado esperado. Sin embargo, no lo hace en el orden que especifique. No tengo conocimiento de nada que produzca resultados en ese orden. - carne_mecánica

Gracias bernie... por intentar ayudar :) - Whisky

EDITAR: si todo lo que quiere es imprimirlo así, simplemente haga esto:

import sys

strng = "S t a c k O v e r f l o w"
for i in range(10000):
    sys.stdout.write(strng)

¿Has intentado simplemente hacer esto?

import time, sys

stackOverflow = "stackoverflow"

for i in range(10000):
    for char in stackOverflow:
        for j in range(3):
            sys.stdout.write(char + " ")
            time.sleep(0.1)

    print("") #Newline

Respondido el 30 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.