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
2

V 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:

0

Teď 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().

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

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

Nebo se registrujte pomocí:

9/10