Funkce a slovníky
Funkce a slovníky se k sobě skvěle hodí. Funkce může dostat slovník jako argument a použít z něj hodnoty, které potřebuje:
def popis(zvire):
return f"{zvire['jmeno']} je {zvire['druh']}."
rex = {"jmeno": "Rex", "druh": "pes", "vek": 3}
print(popis(rex))
print(popis({"jmeno": "Kiwi", "druh": "papoušek", "vek": 4}))Rex je pes.
Kiwi je papoušek.Parametr zvire je název pro slovník, který při volání předáte: při prvním volání je to Rexův slovník, při druhém Kiwiho. Místo samostatných argumentů pro jméno a druh předáte jeden slovník a funkce si z něj vezme, co potřebuje.
Funkce může dostat i seznam slovníků. Tato vrací slovník nejstaršího zvířete. Používá vzor pro největší hodnotu z lekce o cyklech:
def najdi_nejstarsi(zvirata):
vysledek = zvirata[0]
for zvire in zvirata:
if zvire["vek"] > vysledek["vek"]:
vysledek = zvire
return vysledek
zvirata = [
{"jmeno": "Rex", "druh": "pes", "vek": 3},
{"jmeno": "Micka", "druh": "kočka", "vek": 5},
{"jmeno": "Kiwi", "druh": "papoušek", "vek": 4}
]
vitez = najdi_nejstarsi(zvirata)
print("Nejstarší je", vitez["jmeno"])Nejstarší je MickaA funkce může vrátit nový slovník. To se hodí, když vytváříte hodně slovníků stejného tvaru: klíče napíšete jen jednou, ve funkci, a každý slovník, který funkce vrátí, má stejné klíče:
def vytvor_zvire(jmeno, druh):
return {"jmeno": jmeno, "druh": druh, "vek": 0}
nova_zvirata = []
nova_zvirata.append(vytvor_zvire("Coco", "králík"))
nova_zvirata.append(vytvor_zvire("Max", "pes"))
print(nova_zvirata)[{'jmeno': 'Coco', 'druh': 'králík', 'vek': 0}, {'jmeno': 'Max', 'druh': 'pes', 'vek': 0}]"jmeno": jmeno může vypadat zvláštně. Vlevo od dvojtečky je klíč, text "jmeno" v uvozovkách. Vpravo je jeho hodnota: parametr jmeno, ve kterém je při prvním volání "Coco". Nové zvíře má vždy 0 let, a proto má "vek" hodnotu 0 v každém slovníku, který funkce vytvoří.
Typická chyba je zapomenout na return. Funkce pak vrátí None a v seznamu by bylo [None, None].
Jak psát:
Pokyny
Doplňte funkci secti_body(): má sečíst body všech hráčů v seznamu, který dostane, a součet vrátit. Program by pak měl vypsat Celkem: 355.
Doplňte funkci vytvor_hrace(): má vrátit nového hráče, tedy slovník s klíčem "jmeno", jehož hodnotou je parametr jmeno, a s klíčem "body" s hodnotou 0. Poslední dva řádky by pak měly být {'jmeno': 'Max', 'body': 0} a {'jmeno': 'Ema', 'body': 0}.
Začněte programovat zdarma
8/9