Funkce a seznamy
Argumentem může být jakákoli hodnota, tedy i seznam. Funkce, která dostane seznam, ho může projít cyklem a vrátit výsledek. Tato funkce spočítá, kolik čísel v seznamu je větších než zadaná hranice:
def pocet_nad(cisla, hranice):
pocet = 0
for cislo in cisla:
if cislo > hranice:
pocet += 1
return pocet
teploty = [18, 25, 31, 22, 28]
print(pocet_nad(teploty, 24))
print(pocet_nad([5, 10, 15], 7))Tento kód vypíše:
3
2V parametru cisla je ten seznam, který předá volání: nejdřív seznam teploty, potom [5, 10, 15]. Počítání znáte z lekce o cyklech, jenže teď je uvnitř funkce, takže ho pro jakýkoli seznam provedete jediným řádkem. A protože je pocet lokální proměnná, každé volání začíná znovu od 0.
Všimněte si, kde je return: až za cyklem, když jsou zkontrolovaná všechna čísla. V Pythonu o tom rozhoduje odsazení: return pocet je odsazený stejně jako for, a tak do cyklu nepatří. Častou chybou je odsadit ho o úroveň víc, dovnitř cyklu:
def pocet_nad(cisla, hranice):
pocet = 0
for cislo in cisla:
if cislo > hranice:
pocet += 1
return pocet
teploty = [18, 25, 31, 22, 28]
print(pocet_nad(teploty, 24))Tento kód vypíše:
0Teď je return v těle cyklu. Ukončí celou funkci, a tím i cyklus, hned při prvním průchodu cyklem. Funkce zkontrolovala jen první číslo, 18, a vrátila 0.
Funkce může vrátit i seznam: před cyklem vytvořte prázdný seznam, v cyklu do něj přidávejte prvky pomocí .append() a za cyklem ho vraťte. A uvnitř funkce můžete používat i jiné funkce, třeba sum() a len().
Jak psát:
Pokyny
Program skončí chybou NameError: name 'prumer' is not defined. Napište funkci místo komentáře: prumer bude mít parametr cisla a vrátí průměr čísel v seznamu, tedy jejich součet vydělený jejich počtem. Sečíst je můžete cyklem nebo funkcí sum() a jejich počet zjistíte pomocí len(cisla). Program pak vypíše průměrné teploty dvou týdnů, 21.0 a 13.0.
Pod funkci prumer napište funkci teple_dny se dvěma parametry, teploty a hranice. Vrátí nový seznam teplot, které jsou vyšší než hranice. Na konci programu vypište teple_dny(tyden1, 20). Program vypíše [21, 24, 23].
Začněte programovat zdarma
9/10