Instructions

32
s = s.zll(4)
Um das Problem abzufangen, dass der Benutzer möglicherweise weniger als vier Zeichen eingibt oder
sogar einfach nur die [Enter]-Taste drückt, wird die Zeichenkette bis auf vier Stellen am Anfang mit Nul-
len aufgefüllt. Damit ist die Zeichenkette s immer mindestens vier Stellen lang.
for i in range(4):
Jetzt beginnt eine Schleife, die für jede der vier Stellen der Anzeige eine gültige Ziffer ermittelt und in die
Liste z[] schreibt. Dabei werden die ersten vier Zeichen der Zeichenkette s ausgewertet. Ab dem fünften
Zeichen werden alle Zeichen ignoriert.
if s[i].isdigit():
z[i] = int(s[i])
Ist das aus der Zeichenkette gelesene Zeichen wirklich eine Ziffer, wird deren Zahlenwert an der entspre-
chenden Stelle in der Liste z[] abgespeichert. Um das zu prüfen, wird die Methode isdigit() verwen-
det, die für jede Zeichenkettenvariable automatisch verfügbar ist. Sie ergibt True, wenn alle Zeichen der
Zeichenkette – die in diesem Fall nur aus einem Zeichen besteht – Ziffern sind.
Die Funktion int() konvertiert ein Zeichen oder eine Fließkommazahl in eine Ganzzahl. In diesem Fall
wird das gerade aus der Zeichenkette gelesene Zeichen in die entsprechende Ziffer umgewandelt.
else:
z[i] = 0
Im anderen Fall, wenn nämlich an der gerade gelesenen Stelle der Zeichenkette ein anderes Zeichen
steht, weil der Benutzer sich bei der Eingabe nicht an die Regeln gehalten hat, wird an der entsprechen-
den Stelle in der Liste z[] eine 0 eingetragen.
Die auf diese Weise festgelegte Zahl, deren Ziffern sich jetzt einzeln in vier Elementen der Liste z[] befin-
den, soll 2 Sekunden lang angezeigt werden. Danach beginnt die Schleife von Neuem und fordert den
Benutzer zur Eingabe auf.
Da zur Darstellung der Zahl auf der vierstelligen Sieben-Segment-Anzeige permanent in schneller Folge
eine eigene Programmfunktion laufen muss, kann für die Wartezeit nicht einfach time.sleep() verwen-
det werden. Eine while-Schleife lässt 2 Sekunden lang immer wieder die Funktion za() zur Zahlenan-
zeige laufen und beendet danach die Hauptschleife.
sek = time.time()
while time.time() <= sek + 2:
za()
In der Variablen sek wird die aktuelle Zeit in Sekunden gespeichert, die die Funktion time.time() jeder-
zeit auf die Hundertstelsekunde genau ausgibt.
Zur Berechnung von Zeitangaben in Programmen bezieht man sich am besten immer auf die Systemzeit
des Raspberry Pi und versucht nicht, zum Beispiel die Dauer einer Schleife selbst zu berechnen und dar-
aus Zeiträume zu ermitteln. Durch Hintergrundprozesse eines Multitasking-Betriebssystems können diese
Ergebnisse schnell verfälscht werden. Die Differenz zwischen zwei absoluten Zeitangaben ist dagegen
eindeutig.
Die while-Schleife fragt ab, ob seit dem Speichern der Zeit zwei oder mehr Sekunden vergangen sind.
Solange dies nicht der Fall ist, wird immer wieder die Funktion za() zur Zahlenanzeige aufgerufen.
Nach den 2 Sekunden endet diese Schleife, und damit endet auch die übergeordnete while-Schleife. Die
Anzeige geht aus, und der Benutzer wird aufgefordert, eine neue Zahl einzugeben.