Arbeit mit Schleifen wiederholen · Übung
Durchlaufe einen String
In Kapitel 4 hast du gelernt, dass ein String eine geordnete Zeichenfolge ist. Eine for-Schleife funktioniert mit jeder geordneten Sequenz, also auch mit Strings.
Drei Zeichen, drei Zeilen. Python übergibt dir ein Zeichen nach dem anderen, der Reihe nach vom ersten bis zum letzten.
Das ist dieselbe Schleife, die du bereits kennst. Nur das, was durchlaufen wird, hat sich geändert.
Jedes Zeichen zählt
Ein String enthält nicht nur Buchstaben. Auch Leerzeichen und Satzzeichen sind Zeichen. Die Schleife besucht sie wie alle anderen:
Die Klammern machen das Leerzeichen als eigene Zeile sichtbar. Wenn dich eine Zeichenanzahl überrascht, kannst du so schnell prüfen, was genau im String steht.
Deshalb ist character oder char als Schleifenvariablenname oft besser als letter. Verwende letter, wenn du weißt, dass der String tatsächlich Buchstaben enthält.
Vergleiche das mit der Indizierung
Du könntest dieselben Zeichen mit den Indexwerkzeugen aus Kapitel 4 erreichen:
word = "sky"
print(word[0])
print(word[1])
print(word[2])
Das funktioniert und hat dieselbe Schwäche wie die vier Ausgabezeilen des Organizers. Es passt nur zu einem String mit drei Zeichen. Die Schleife passt zu jedem String:
Verwende einen Index, wenn du eine bestimmte Position möchtest. Verwende eine Schleife, wenn du jeden Wert der Reihe nach möchtest.
Entscheide in jedem Durchlauf
Der Schleifenrumpf kann beliebige Anweisungen enthalten, auch eine if-Anweisung. Diese Verbindung macht Schleifen besonders nützlich: Python stellt die Frage einmal pro Zeichen.
Achte genau auf die Einrückung, denn es gibt jetzt zwei Ebenen:
for character in "melody": <- gives character its next value on each pass
if character in vowels: <- one level in: runs on every pass
print(...) <- two levels in: runs only when the test is True
Die if-Zeile ist eingerückt, weil sie zum Schleifenrumpf gehört. Die print-Zeile ist zweimal eingerückt, weil sie zu if gehört. Python verwendet diese Ebenen, um die Zugehörigkeit zu bestimmen. Die richtige Einrückung ist deshalb keine bloße Stilfrage.
Ein if innerhalb einer Schleife beendet die Schleife nicht. Wenn die Prüfung False ergibt, überspringt Python diese eingerückte Zeile und geht zum nächsten Zeichen über.
Was gibt dieser Code aus?
for character in "ab c":
print(f"<{character}>")Wie oft läuft print in dieser Schleife?
digits = ["1", "2", "3"]
for character in "a1b2":
if character in digits:
print(character)
Durchlaufe in der Übung einen Text, wähle seine Vokale aus und melde, wie viele Zeichen du geprüft hast.
Aufgabe
Die Werte phrase und vowels sind bereits vorgegeben. Vervollständige das Programm, sodass es:
phrasemitcharacterals Schleifenvariable durchläuft;die Großbuchstabenvariante jedes Zeichens ausgibt, das in der Liste
vowelsvorkommt, jeweils in einer eigenen Zeile;die abschließende Zeile mit der Anzahl beibehält, die einmal nach der Schleife läuft.
Erwartete Ausgabe:
O
A
I
U
Characters checked: 18
Verwende .upper() auf dem Zeichen, das du ausgibst. Ändere phrase und vowels nicht.