Counter ersetzt alte zahl

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 25. März 2009, 15:00

So geht's:

Code: Alles auswählen

import sys
import time
import string

def counter(start = 10, ende = 0, zeit = 1):
    str_sekunden = " Sekunden"
    while start > ende:
        zurueck = (len(str_sekunden) + len(str(start))) * '\b'
        ausgabe = zurueck + string.rjust(str(start), 2) + str_sekunden
        sys.stdout.write("%s" % ausgabe)
        sys.stdout.flush()
        start -= 1
        time.sleep(zeit)
Aber der Code ist jetzt nun wirklich grausig.

Bei '\r' wird nichts "überschrieben", sondern nur der Cursor neu positioniert. Lies mal diesen Artikel: http://de.wikipedia.org/wiki/Steuerzeichen

Gruß,
Christian

edit: Natürlich so:

Code: Alles auswählen

zurueck = ((len(str_sekunden) + len(str(start))) + 1) * '\b'
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 25. März 2009, 15:08

Ich würde es so machen:

Code: Alles auswählen

def counter(start=20,ende=0,zeit=1):
    while start > ende:
        stdout.write('\r')
        stdout.write("%2d Sekunden               " % start)
        stdout.flush()
        start -= 1
        time.sleep(zeit) 
Einfach am Ende ein paar Leerzeichen mit ausgeben und gut. Dürfen natürlich nicht zu viele sein, damit keine neue Zeile entsteht...
Halte das aber für viel einfacher als \b zu nutzten...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten