Ein Dictionary durchlaufen
Eine for-Schleife kann auch ein Dictionary durchlaufen. In jedem Durchlauf bekommt die Schleifenvariable einen Schlüssel, in der Reihenfolge, in der die Paare hinzugefügt wurden. Den zugehörigen Wert liest du mit eckigen Klammern, mit dem Schlüssel in einer Variablen, wie in der vorigen Übung:
hauptstaedte = {"Deutschland": "Berlin", "Österreich": "Wien", "Frankreich": "Paris"}
for land in hauptstaedte:
print(land, "-", hauptstaedte[land])Deutschland - Berlin
Österreich - Wien
Frankreich - ParisIm ersten Durchlauf enthält land den Text "Deutschland", also ist hauptstaedte[land] gleich "Berlin". Im zweiten Durchlauf enthält es "Österreich" und so weiter.
Wenn du sowohl den Schlüssel als auch den Wert brauchst, gibt es einen praktischeren Weg: die Methode .items(). Sie gibt der Schleife die Paare des Dictionaries, eines nach dem anderen, und du schreibst nach for zwei Variablen, getrennt durch ein Komma. Die erste bekommt den Schlüssel, die zweite den Wert:
hauptstaedte = {"Deutschland": "Berlin", "Österreich": "Wien", "Frankreich": "Paris"}
for land, hauptstadt in hauptstaedte.items():
print(f"Die Hauptstadt von {land} ist {hauptstadt}.")Die Hauptstadt von Deutschland ist Berlin.
Die Hauptstadt von Österreich ist Wien.
Die Hauptstadt von Frankreich ist Paris.Die Namen der beiden Variablen wählst du selbst. Nimm Namen, die sagen, was darin steckt: for land, hauptstadt in ... verrät mehr als for schluessel, wert in ....
Die Muster aus der Lektion über Schleifen funktionieren auch hier. Wenn die Werte Zahlen sind, kannst du sie addieren oder mit if einige der Paare auswählen:
lager = {"Äpfel": 12, "Zitronen": 0, "Birnen": 5}
gesamt = 0
for frucht, anzahl in lager.items():
gesamt += anzahl
if anzahl == 0:
print("Ausverkauft:", frucht)
print("Stück insgesamt:", gesamt)Ausverkauft: Zitronen
Stück insgesamt: 17Ein typischer Fehler ist, .items() zu vergessen: for land, hauptstadt in hauptstaedte:. Die Schleife bekommt dann nur die Schlüssel, und Python versucht, jeden Schlüssel, zum Beispiel den Text "Deutschland", auf die beiden Variablen aufzuteilen, einen Buchstaben in jede. Es sind zu viele Buchstaben, und das Programm endet mit ValueError: too many values to unpack (expected 2).
So schreibst du es:
Anweisungen
- 1
Schreibe eine
for-Schleife mit.items(), diepunktedurchläuft und den Namen und die Punkte jedes Spielers ausgibt, getrennt durch einen Doppelpunkt, zum BeispielAnna: 12. - 2
Gib darunter in einer zweiten Schleife die Namen der Spieler aus, die mindestens 10 Punkte haben, jeden in einer eigenen Zeile.