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 Micka

A 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].

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

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

8/9