[Python] Come stampare su schermo senza generare nuove righe

Diego Barrera diegonebarrera a yahoo.it
Mar 17 Apr 2012 22:20:23 CEST


On 17/04/2012 16:03, Marco Beri wrote:
> 2012/4/17 Karim Gorjux <lemieliste a gmail.com 
> <mailto:lemieliste a gmail.com>>
>
>     Salve, mi piacerebbe poter stampare su schermo delle stringhe di
>     output, ma senza doverle sempre ripetere.
>      Ad esempio, se volessi fare un conto alla rovescia, vorrei che i
>     numeri fossero scritti sempre nello stesso posto e non cosė
>
>     4
>     3
>     2
>     1
>     via!
>
>     o cosė (con la virgola dopo il print)
>
>     4 3 2 1 via!
>
>     Sapete indicarmi anche solo dove posso trovare doc su internet? Io
>     pensavo che fosse il sys.stdout.flush(), ma penso di essermi sbagliato
>
>
> Prova questo:
>
>     import sys
>     import time
>     for x in range(10):
>         sys.stdout.write("%d\r" % x)
>         sys.stdout.flush()
>         time.sleep(0.5)
>
>

A me se provo per il conto alla rovescia

sys.stdout.write("%d\r" % (10-x))

rimane lo zero del numero 10...
invece di 9 mi dice 90
invece di 8 , 80 etc.

Visto che mi ha incuriosito, c'e' un modo per far sparire proprio tutte 
le cifre/caratteri?
A me viene tipo

import sys
import time
for x in range(10):
     message="%d\r" % (10-x)
     sys.stdout.write(message)
     sys.stdout.flush()
     time.sleep(0.5)
     sys.stdout.write(' ' * len(message) + '\r')
     sys.stdout.flush()

Pero' non mi pare tanto bello :)
-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120417/8c6f3a99/attachment.html>


Maggiori informazioni sulla lista Python