Fehlende Schlüssel
Wenn du einen Schlüssel liest, der nicht im Dictionary steht, endet das Programm mit einem KeyError. Wenn du nicht sicher bist, ob ein Schlüssel vorhanden ist, gibt es zwei Wege, den Fehler zu vermeiden.
Der erste ist, mit in zu fragen, das du von Listen kennst. Bei einem Dictionary schaut in auf die Schlüssel, und das Ergebnis ist True oder False:
kontakt = {"name": "Max", "email": "max@example.com"}
print("email" in kontakt)
print("telefon" in kontakt)
print("Max" in kontakt)True
False
FalseDie letzte Zeile ist False, obwohl Max im Dictionary steht: "Max" ist ein Wert, kein Schlüssel, und in schaut nur auf die Schlüssel. Zusammen mit if liest du einen Schlüssel nur, wenn er vorhanden ist:
kontakt = {"name": "Max", "email": "max@example.com"}
if "telefon" in kontakt:
print("Telefon:", kontakt["telefon"])
else:
print("Max hat keine Telefonnummer.")Max hat keine Telefonnummer.Der zweite Weg ist die Methode .get(). Sie liest einen Wert wie die eckigen Klammern, aber wenn der Schlüssel nicht vorhanden ist, endet das Programm nicht mit einem Fehler. Du bekommst None, den Wert für „nichts“, den du von Funktionen ohne return kennst. Oder du bekommst einen Wert deiner Wahl, den Standardwert, wenn du ihn als zweites Argument angibst:
kontakt = {"name": "Max", "email": "max@example.com"}
print(kontakt.get("email"))
print(kontakt.get("telefon"))
print(kontakt.get("telefon", "unbekannt"))max@example.com
None
unbekannt.get() liest nur: Es fügt den Schlüssel "telefon" nicht zum Dictionary hinzu.
Der Schlüssel in eckigen Klammern (oder in .get()) muss nicht in Anführungszeichen ausgeschrieben sein. Er kann in einer Variablen stehen. Das ist nützlich, wenn du den Schlüssel beim Schreiben des Programms noch nicht kennst, zum Beispiel in einer Schleife:
speisekarte = {"Kaffee": 4, "Tee": 3}
getraenk = "Tee"
print(speisekarte[getraenk])3Python schaut in die Variable getraenk, findet darin den Text "Tee" und liest den Wert mit diesem Schlüssel. Achte auf die Anführungszeichen: speisekarte["getraenk"] sucht einen Schlüssel, der wörtlich "getraenk" heißt, und den gibt es nicht.
So schreibst du es:
Anweisungen
- 1
Das Café verkauft keinen Saft, deshalb endet das Programm mit
KeyError: 'Saft'. Behebe das mitifundin: Wenn die Bestellung auf der Speisekarte steht, gib ihren Preis wie bisher aus; wenn nicht, gibSaft gibt es leider nicht.aus (mit dem Namen der Bestellung darin). Die Ausgabe soll aus drei Zeilen bestehen:Tee kostet 3,Saft gibt es leider nicht.undKuchen kostet 6. - 2
Addiere unter der Schleife in einer zweiten Schleife die Preise aller Bestellungen und gib
Summe: 9aus. Lies jeden Preis mit.get()und dem Standardwert0, damit der Saft nichts hinzufügt.