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.
Antworten
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten