Stejná položka znovu

Zákazník chce ještě dvě mléka: pridej_polozku(kosik, "Mléko", 25, 2). Váš program dá na účtenku druhý řádek s mlékem. Není to chyba, ale skutečný obchod by jen změnil počet kusů na řádku, který už tam je: Mléko: 6 x 25 Kč = 150 Kč.

Než tedy pridej_polozku() přidá novou položku, musí v seznamu hledat položku se stejným názvem. Takhle v seznamu najdete slovník a změníte ho:

knihy = [
    {"nazev": "Hobit", "stran": 310},
    {"nazev": "Matylda", "stran": 240},
]
for kniha in knihy:
    if kniha["nazev"] == "Matylda":
        kniha["stran"] += 10
print(knihy)
[{'nazev': 'Hobit', 'stran': 310}, {'nazev': 'Matylda', 'stran': 250}]

Proměnná cyklu kniha není kopie, je to přímo slovník ze seznamu. Když změníte kniha["stran"], změna v seznamu knihy zůstane.

A teď funkce. Když cyklus najde položku se stejným názvem, zvýší její počet a funkci ukončí pomocí return, protože práce je hotová. Když cyklus projde celý seznam a nic nenajde, funkce pokračuje pod cyklem, a právě tam se přidá nová položka. Řádek s .append() proto patří za cyklus. Uvnitř cyklu pod else by přidal novou položku, jakmile by cyklus narazil na položku s jiným názvem, a to je hned na začátku chléb.

A pamatujte, že porovnávání textů je přesné: "mléko" není totéž co "Mléko".

Pokyny

Dole pod vejce přidejte ještě dvě mléka: pridej_polozku(kosik, "Mléko", 25, 2). Na účtence se objeví druhý řádek s mlékem.

Upravte funkci pridej_polozku(): za kontrolou počtu projděte v cyklu polozky, a když má některá položka stejný název jako nazev, zvyšte její počet o pocet a funkci ukončete pomocí return. Na účtence pak bude jediný řádek s mlékem, Mléko: 6 x 25 Kč = 150 Kč, a celková cena bude 650 Kč.

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

6/7