Součet a průměr
Teď, když umíte procházet seznam, podívejme se, k čemu se cykly používají nejčastěji. První vzor všechno sečte. Řekněme, že máte ceny věcí v nákupním košíku a chcete znát celkovou cenu:
ceny = [120, 45, 300, 85]
celkem = 0
for cena in ceny:
celkem += cena
print("Celkem:", celkem)Celkem: 550Proměnná celkem sbírá součet. Začíná na 0, protože než cokoli přičtete, je součet nula. V každém průchodu celkem += cena přičte jednu cenu: po prvním průchodu je v proměnné celkem hodnota 120, pak 165, 465 a nakonec 550.
Záleží na tom, kam který řádek patří:
celkem = 0patří před cyklus, aby se provedlo jen jednou. Kdyby bylo uvnitř cyklu, nastavilo by proměnnoucelkemv každém průchodu znovu na 0 a na konci by v ní zůstala jen poslední cena,85.print()patří za cyklus, bez odsazení, kde už je součet hotový. Kdyby byl odsazený uvnitř cyklu, vypsal by každý mezisoučet: 120, 165, 465, 550.
Průměr je součet vydělený počtem hodnot a počet hodnot je délka seznamu:
prumer = celkem / len(ceny)
print("Průměr:", prumer)Průměr: 137.5Použijte len(ceny), a ne číslo 4. Když pak do seznamu přidáte další cenu, průměr bude pořád správně. A pamatujte, že / dává vždy desetinné číslo: průměr 40 se vypíše jako 40.0.
Sčítání čísel v seznamu je tak časté, že na ně má Python zkratku, funkci sum() (součet):
ceny = [120, 45, 300, 85]
print(sum(ceny))550Proč se tedy učit cyklus? Protože umí víc než sum(). V cyklu sami rozhodujete, co a kdy přičtete, například s pomocí if jen ceny vyšší než 100.
Ještě jedna past: proměnnou nepojmenujte sum. Zápis sum = 0 sice funguje, ale zakryje funkci sum(), kterou má Python připravenou, a pozdější sum(ceny) skončí chybou TypeError: 'int' object is not callable (celé číslo nejde zavolat jako funkci). Proto se proměnná tady jmenuje celkem. Totéž platí pro max, min, len nebo list.
Jak psát:
Pokyny
Seznam minuty_cteni obsahuje, kolik minut jste četli v jednotlivých dnech jednoho týdne. Vytvořte proměnnou celkem s hodnotou 0. Pak seznam projděte cyklem for a každou hodnotu přičtěte k proměnné celkem pomocí +=.
Za cyklem vypište součet příkazem print("Celkem:", celkem). Výstup bude Celkem: 280.
Na konci programu vytvořte proměnnou prumer s průměrem, tedy s hodnotou celkem vydělenou délkou seznamu. Vypište ho jako Průměr: 40.0.
Začněte programovat zdarma
4/11