Funktionen und Dictionaries
Funktionen und Dictionaries passen gut zusammen. Eine Funktion kann ein Dictionary als Argument bekommen und die Werte verwenden, die sie braucht:
def beschreiben(tier):
return f"{tier['name']} ist ein {tier['art']}."
rex = {"name": "Rex", "art": "Hund", "alter": 3}
print(beschreiben(rex))
print(beschreiben({"name": "Kiwi", "art": "Papagei", "alter": 4}))Rex ist ein Hund.
Kiwi ist ein Papagei.Der Parameter tier ist ein Name für das Dictionary, das du im Aufruf übergibst: Im ersten Aufruf ist es das Dictionary von Rex, im zweiten das von Kiwi. Statt getrennter Argumente für Name und Art übergibst du ein Dictionary, und die Funktion nimmt sich daraus, was sie braucht.
Eine Funktion kann auch eine Liste von Dictionaries bekommen. Diese hier gibt das Dictionary des ältesten Tiers zurück. Sie verwendet das Muster für den größten Wert aus der Lektion über Schleifen:
def aeltestes(tiere):
ergebnis = tiere[0]
for tier in tiere:
if tier["alter"] > ergebnis["alter"]:
ergebnis = tier
return ergebnis
tiere = [
{"name": "Rex", "art": "Hund", "alter": 3},
{"name": "Bella", "art": "Pferd", "alter": 5},
{"name": "Kiwi", "art": "Papagei", "alter": 4}
]
sieger = aeltestes(tiere)
print(sieger["name"], "ist am ältesten.")Bella ist am ältesten.Und eine Funktion kann ein neues Dictionary zurückgeben. Das ist praktisch, wenn du viele Dictionaries derselben Form erstellst: Du schreibst die Schlüssel nur einmal, in der Funktion, und jedes Dictionary, das sie zurückgibt, hat dieselben Schlüssel:
def tier_erstellen(name, art):
return {"name": name, "art": art, "alter": 0}
neue_tiere = []
neue_tiere.append(tier_erstellen("Coco", "Hase"))
neue_tiere.append(tier_erstellen("Max", "Hund"))
print(neue_tiere)[{'name': 'Coco', 'art': 'Hase', 'alter': 0}, {'name': 'Max', 'art': 'Hund', 'alter': 0}]"name": name sieht vielleicht merkwürdig aus. Links vom Doppelpunkt steht der Schlüssel, der Text "name" in Anführungszeichen. Rechts steht sein Wert: der Parameter name, der im ersten Aufruf "Coco" enthält. Ein neues Tier ist immer 0 Jahre alt, deshalb ist "alter" in jedem Dictionary, das die Funktion erstellt, gleich 0.
Ein typischer Fehler ist, return zu vergessen. Die Funktion gibt dann None zurück, und die Liste wäre [None, None].
So schreibst du es:
Anweisungen
- 1
Vervollständige die Funktion
gesamtpunkte(): Sie soll die Punkte aller Spieler in der Liste, die sie bekommt, addieren und die Summe zurückgeben. Das Programm soll dannGesamt: 355ausgeben. - 2
Vervollständige die Funktion
spieler_erstellen(): Sie soll einen neuen Spieler zurückgeben, ein Dictionary mit dem Schlüssel"name", der den Parameternameenthält, und dem Schlüssel"punkte", der0enthält. Die letzten beiden Zeilen sollen dann{'name': 'Max', 'punkte': 0}und{'name': 'Sophie', 'punkte': 0}lauten.