Fundamenty programowania — Proste funkcje (rozszerzone wyjaśnienie)

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Fundamenty programowania — Proste funkcje (rozszerzone wyjaśnienie)
In Progress

Funkcje w Pythonie — krótkie wprowadzenie

Cześć! Dzisiaj nauczysz się więcej o funkcjach w Pythonie. Funkcja to mały program w środku programu — możesz ją nazwać i używać wielokrotnie. Dzięki temu nie musisz powtarzać tego samego kodu wiele razy.

1. Co to jest funkcja? (najprostsze wyjaśnienie)

Funkcja to blok kodu, który ma nazwę. Definiujemy ją słowem def, potem nazwę, nawiasy i dwukropek. Wewnątrz funkcji piszesz instrukcje, które mają się wykonać, gdy wywołasz funkcję.

Przykład:

def powitanie():
    print("Witaj na lekcji Pythona!")

Aby funkcja coś zrobiła, musisz ją wywołać (napisać jej nazwę z nawiasami):

powitanie()  # uruchomi kod w funkcji i wypisze tekst

2. Funkcje z parametrami

Parametry to dane, które możesz przekazać do funkcji. Dzięki nim funkcja może działać inaczej w zależności od tego, co jej podasz.

Przykład:

def przywitanie(imie):
    print("Cześć, " + imie + "!")

przywitanie("Ania")  # wypisze: Cześć, Ania!
przywitanie("Kuba")  # wypisze: Cześć, Kuba!

Parametry są jak puste miejsca w przepisie — za każdym razem możesz wstawić inne składniki.

3. Funkcja, która coś zwraca — return

Funkcja może zwracać wartość. To znaczy: zamiast tylko coś wypisać, może dać wynik, którego potem użyjesz.

Przykład:

def dodaj(a, b):
    return a + b

wynik = dodaj(3, 5)
print(wynik)            # wypisze 8
print(dodaj(10, 20))    # wypisze 30

Różnica: print tylko pokazuje wynik na ekranie. return daje wartość, którą możesz przypisać do zmiennej lub użyć dalej.

4. Przykłady z wykorzystaniem tego, co już umiesz (pętle, listy, warunki)

  • Przykład 1 — funkcja, która sumuje wszystkie liczby z listy (użycie pętli):

    def suma_listy(liczby):
        suma = 0
        for x in liczby:
            suma = suma + x
        return suma
    
    print(suma_listy([1, 2, 3, 4]))  # 10
    
  • Przykład 2 — funkcja, która sprawdza parzystość (użycie instrukcji warunkowej):

    def czy_parzysta(n):
        if n % 2 == 0:
            return True
        else:
            return False
    
    print(czy_parzysta(4))  # True
    print(czy_parzysta(7))  # False
    
  • Przykład 3 — funkcja, która wypisuje przywitania dla listy imion (użycie listy i pętli):

    def przywitaj_wszystkich(lista_imion):
        for imie in lista_imion:
            print("Cześć, " + imie + "!")
    
    przywitaj_wszystkich(["Ania", "Bartek", "Zosia"])
    

5. Funkcje — ważne rzeczy do zapamiętania

  • Nazwa funkcji powinna mówić, co robi (np. dodaj, policz_sume).
  • Parametry to dane wejściowe w nawiasach: def f(a, b):.
  • Wywołanie funkcji: f(2, 3).
  • return przerywa funkcję i oddaje wartość.
  • Funkcja może wypisywać (print) i/lub zwracać (return) wartość.

6. Małe porównanie: funkcja wypisująca vs funkcja zwracająca

def powiedz_czesc():
    print("Cześć!")

def zwroc_czesc():
    return "Cześć!"

powiedz_czesc()                 # wypisze: Cześć!
tekst = zwroc_czesc()
print(tekst + " Jak leci?")     # używasz zwróconego tekstu dalej

Jeśli chcesz użyć wyniku w kolejnych instrukcjach (np. dodać do tekstu, porównać), użyj return.

7. Funkcja może używać innej funkcji

def dodaj(a, b):
    return a + b

def suma_trzech(a, b, c):
    return dodaj(dodaj(a, b), c)

print(suma_trzech(1, 2, 3))  # 6

8. Przykłady bardziej „praktyczne” dla Ciebie

  • Przykład — funkcja sprawdzająca, czy imię jest na liście ulubionych:

    def czy_ulubione(imie, lista_ulubionych):
        if imie in lista_ulubionych:
            return "Tak, to jest ulubione imię"
        else:
            return "Nie, nie ma go na liście"
    
    print(czy_ulubione("Ania", ["Ania", "Zosia"]))
    
  • Przykład — funkcja, która zmienia wszystkie litery w liście na wielkie (bez zmian oryginału):

    def na_wielkie(lista_tekstow):
        nowa = []
        for t in lista_tekstow:
            nowa.append(t.upper())
        return nowa
    
    print(na_wielkie(["Ania", "Kasia"]))  # ["ANIA", "KASIA"]
    

9. Dobre praktyki (krótkie)

  • Nazywaj funkcje jasno: policz_punkty zamiast pp.
  • Używaj małych funkcji — każda funkcja niech robi jedną rzecz (łatwiej testować).
  • Testuj funkcję od razu: najpierw mały przykład, potem trudniejsze przypadki.
  • Dodaj komentarz lub krótką informację (docstring), co robi funkcja:
def dodaj(a, b):
    """Zwraca sumę a i b"""
    return a + b

10. Zadania do samodzielnego rozwiązania (z podpowiedziami i rozwiązaniami)

  1. Zadanie 1: Napisz funkcję powiedz_czesc(), która wypisze "Cześć!" i wywołaj ją.

    Podpowiedź: użyj print.

    Rozwiązanie:

    def powiedz_czesc():
        print("Cześć!")
    
    powiedz_czesc()
    
  2. Zadanie 2: Napisz funkcję dodaj(a, b), która zwraca sumę a i b. Przetestuj ją.

    Podpowiedź: użyj return a + b.

    Rozwiązanie:

    def dodaj(a, b):
        return a + b
    
    print(dodaj(3, 5))  # 8
    
  3. Zadanie 3: Stwórz funkcję przywitanie(imie) jak wyżej i wywołaj ją z kilkoma imionami.

    Rozwiązanie:

    def przywitanie(imie):
        print("Cześć, " + imie + "!")
    
    przywitanie("Ola")
    przywitanie("Marek")
    
  4. Zadanie 4: Napisz funkcję policz_sume_listy(liczby), która zwraca sumę elementów listy.

    Podpowiedź: użyj for i zmiennej pomocniczej.

    Rozwiązanie:

    def policz_sume_listy(liczby):
        suma = 0
        for x in liczby:
            suma += x
        return suma
    
    print(policz_sume_listy([2, 4, 6]))  # 12
    
  5. Zadanie 5: Napisz funkcję ile_parzystych(liczby), która zlicza, ile w liście jest liczb parzystych.

    Podpowiedź: użyj % 2 == 0.

    Rozwiązanie:

    def ile_parzystych(liczby):
        licznik = 0
        for n in liczby:
            if n % 2 == 0:
                licznik += 1
        return licznik
    
    print(ile_parzystych([1,2,3,4,5,6]))  # 3
    
  6. Zadanie 6 (trochę trudniejsze): Napisz funkcję znajdz_najdluzsze(imiona), która zwraca najdłuższe imię z listy.

    Podpowiedź: możesz użyć len().

    Rozwiązanie:

    def znajdz_najdluzsze(imiona):
        najd = imiona[0]
        for i in imiona:
            if len(i) > len(najd):
                najd = i
        return najd
    
    print(znajdz_najdluzsze(["Ania","Katarzyna","Marek"]))  # Katarzyna
    
  7. Zadanie 7 (łączenie funkcji): Użyj dodaj i napisz suma_para(a,b,c,d), która doda a+b i c+d, a potem zwróci ich sumę.

    Podpowiedź: wewnątrz użyj dodaj.

    Rozwiązanie:

    def suma_para(a, b, c, d):
        return dodaj(dodaj(a, b), dodaj(c, d))
    
    print(suma_para(1,2,3,4))  # 10
    
  8. Zadanie 8 (opcjonalne, kreatywne): Napisz funkcję powitanie_imieniny(imiona), która dla listy imion wyświetli: Witaj, Ania! Witaj, Kuba! ...

    Podpowiedź: użyj pętli for.

    Rozwiązanie:

    def powitanie_imieniny(imiona):
        for i in imiona:
            print("Witaj, " + i + "!")
    
    powitanie_imieniny(["Ania","Kuba","Zosia"])
    

11. Mały test — sprawdź się!

Spróbuj odpowiedzieć bez uruchamiania programu:

  • Co zrobi funkcja, która nie ma return, ale wypisuje coś za pomocą print?
  • Co się stanie, jeśli wywołasz funkcję z za małą liczbą argumentów (np. dodaj(1))?
  • Jakie są trzy rzeczy, które funkcja może robić? (np. wypisać, zwrócić wartość, zmodyfikować listę)

12. Szybkie odpowiedzi (klucz)

  • Funkcja bez return zwykle zwraca None (ale może wypisywać tekst).
  • Wywołanie funkcji z za małą liczbą argumentów spowoduje błąd — Python powie, że zabrakło argumentu.
  • Funkcja może: wypisać coś na ekran, zwrócić wartość, zmienić (np. elementy) listy przekazanej do niej.

Na koniec — kilka wskazówek dla Ciebie

  • Najpierw pomyśl, co ma robić funkcja (jeden prosty cel).
  • Przetestuj ją na prostych danych.
  • Jeśli coś nie działa, dodaj print w środku, żeby zobaczyć co się dzieje.