Seite 1 von 1

Print in einer Zeile mit nur einem Wert

Verfasst: Montag 28. Juli 2014, 18:46
von Abraxas89
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 :)

Re: Print in einer Zeile mit nur einem Wert

Verfasst: Montag 28. Juli 2014, 19:07
von 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()

Re: Print in einer Zeile mit nur einem Wert

Verfasst: Montag 28. Juli 2014, 19:20
von Abraxas89
Danke! Es funktioniert. Jetzt denk ich noch einmal kurz darüber nach und dann wird es im eigentlichen Problem eingebunden :)