Print in einer Zeile mit nur einem Wert

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
Abraxas89
User
Beiträge: 2
Registriert: Montag 28. Juli 2014, 18:35

Moin,

ich versuche mir gerade selbst Python ein wenig beizubringen, um mit meinem raspberry ein ppar kleine Projekte umzusetzen, die in meinem Kopf schwirren (...)

Meine Frage: Wenn ich

Code: Alles auswählen

import time
a=1
while True:
    print a
    a=a+1
    time.sleep(1)
durchlaufen lasse, kommt ja:
1
2
3
(...)
Ich will jedoch, dass nur eine Zeile ausgegeben wird, in welche (nur!) die aktuelle Zahl steht. Also auch nicht "1 2 3 (...)". Der Code müsste dann ja im Prinzip folgendes leisten: "a schreiben, 1 s warten, a löschen, a+1 schreiben, 1s warten, a+1 löschen, a+2 schreiben" usw.


Jemand ne Idee? Leider konnte ich auf eigene Faust die Lösung nicht finden.

Danke :)
BlackJack

@Abraxas89: Du must a) vor jeder Zahl ein Wagenrücklaufzeichen ausgeben ('\r'), b) dafür sorgen dass nach der Zahl kein Zeilenendezeichen ausgegeben wird, und c) nach der Ausgabe dafür sorgen das die Daten sofort geschrieben und nicht gepuffert werden. Ungetestet:

Code: Alles auswählen

import sys
from itertools import count
from time import sleep


def main():
    for i in count(1):
        sys.stdout.write('\r{0}'.format(i))
        sys.stdout.flush()
        sleep(1)


if __name__ == '__main__':
    main()
Abraxas89
User
Beiträge: 2
Registriert: Montag 28. Juli 2014, 18:35

Danke! Es funktioniert. Jetzt denk ich noch einmal kurz darüber nach und dann wird es im eigentlichen Problem eingebunden :)
Antworten