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".
Jak psát:
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
6/7