Liceum Klasa I 45 minut PP: II.1 | s. 343

Lekcja 13: Funkcje z parametrami i bez - definiowanie i wywolywanie

Slowo kluczowe def, parametry, return, zasieg zmiennych, funkcje w praktyce

📋 Podstawa programowa: II.1
Pythonfunkcjeparametryreturn
00:00
Wprowadzenie
5 min
00:05
Teoria
15 min
00:20
Cwiczenia
15 min
00:35
Podsumowanie
10 min
📚

Teoria

Czym sa funkcje?

Funkcja to wydzielony blok kodu, ktory wykonuje okreslone zadanie. Funkcje pozwalaja dzielic program na mniejsze, logiczne czesci, co sprawia, ze kod jest czytelniejszy, latwiejszy do testowania i mozna go wielokrotnie uzywac (zasada DRY - Don't Repeat Yourself).

Funkcje mozemy porownac do przepisow kucharskich - kazdy przepis ma nazwe, liste skladnikow (parametry) i opisane kroki (cialo funkcji), a na koncu dostajemy gotowe danie (wartosc zwracana).

Dlaczego uzywamy funkcji?
  • Unikamy powtarzania kodu (DRY)
  • Program jest bardziej czytelny i zorganizowany
  • Latwiej testowac poszczegolne czesci programu
  • Mozna wspolpracowac w zespole - kazdy pisze swoje funkcje

Definiowanie funkcji - slowo kluczowe def

W Pythonie funkcje definiujemy za pomoca slowa kluczowego def, po czym podajemy nazwe funkcji, nawiasy okragle (z opcjonalnymi parametrami) i dwukropek. Cialo funkcji musi byc wciete (zidentowane).

# Funkcja bez parametrow
def przywitaj():
    print("Czesc! Witaj w programie!")

# Wywolanie funkcji
przywitaj()  # Wypisze: Czesc! Witaj w programie!
przywitaj()  # Mozemy wywolac wielokrotnie

Funkcje z parametrami

Parametry to zmienne, ktore przekazujemy do funkcji podczas jej wywolania. Pozwalaja one funkcji dzialac na roznych danych za kazdym razem.

# Funkcja z jednym parametrem
def przywitaj_osobe(imie):
    print(f"Czesc, {imie}! Milo Cie widziec!")

przywitaj_osobe("Anna")   # Czesc, Anna! Milo Cie widziec!
przywitaj_osobe("Tomek")  # Czesc, Tomek! Milo Cie widziec!

# Funkcja z wieloma parametrami
def dodaj(a, b):
    wynik = a + b
    print(f"{a} + {b} = {wynik}")

dodaj(3, 5)    # 3 + 5 = 8
dodaj(10, 20)  # 10 + 20 = 30

Instrukcja return - zwracanie wartosci

Funkcja moze zwracac wartosc za pomoca instrukcji return. Zwrocona wartosc moze byc przypisana do zmiennej lub uzyta w wyrazeniu.

# Funkcja zwracajaca wartosc
def pole_prostokata(a, b):
    return a * b

# Uzycie zwroconej wartosci
wynik = pole_prostokata(5, 3)
print(f"Pole: {wynik}")  # Pole: 15

# Mozna tez bezposrednio
print(f"Pole: {pole_prostokata(7, 4)}")  # Pole: 28

Parametry domyslne

Parametrom mozna nadawac wartosci domyslne. Jezeli podczas wywolania nie podamy argumentu, zostanie uzyta wartosc domyslna.

def potega(podstawa, wykladnik=2):
    return podstawa ** wykladnik

print(potega(5))       # 25 (uzyto domyslnego wykladnika 2)
print(potega(5, 3))    # 125 (wykladnik = 3)
print(potega(2, 10))   # 1024

Zasieg zmiennych (scope)

Zmienne utworzone wewnatrz funkcji sa lokalne - istnieja tylko w tej funkcji. Zmienne zdefiniowane poza funkcjami sa globalne - dostepne w calym programie.

x = 10  # zmienna globalna

def moja_funkcja():
    y = 5  # zmienna lokalna
    print(f"x = {x}, y = {y}")

moja_funkcja()  # x = 10, y = 5
print(x)        # 10 - OK
# print(y)      # BLAD! y nie istnieje poza funkcja
Uwaga: Unikaj modyfikowania zmiennych globalnych wewnatrz funkcji. Lepiej przekazywac dane przez parametry i zwracac wynik przez return. To czyni kod bardziej przewidywalnym.
✏️

Zadania

Latwe

Zadanie 1: Podstawowe operacje matematyczne

Napisz cztery funkcje: dodaj(a, b), odejmij(a, b), pomnoz(a, b), podziel(a, b). Kazda ma zwracac wynik odpowiedniej operacji. Funkcja podziel powinna obslugiwac dzielenie przez zero.

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

def odejmij(a, b):
    return a - b

def pomnoz(a, b):
    return a * b

def podziel(a, b):
    if b == 0:
        return "Blad: dzielenie przez zero!"
    return a / b

# Testy
print(dodaj(10, 5))    # 15
print(odejmij(10, 5))  # 5
print(pomnoz(10, 5))   # 50
print(podziel(10, 5))  # 2.0
print(podziel(10, 0))  # Blad: dzielenie przez zero!
Srednie

Zadanie 2: Konwerter temperatur

Napisz dwie funkcje: celsius_na_fahrenheit(c) i fahrenheit_na_celsius(f). Wzory: F = C * 9/5 + 32 oraz C = (F - 32) * 5/9. Przetestuj dla kilku wartosci.

Pokaz rozwiazanie
def celsius_na_fahrenheit(c):
    return c * 9 / 5 + 32

def fahrenheit_na_celsius(f):
    return (f - 32) * 5 / 9

# Testy
print(f"0°C = {celsius_na_fahrenheit(0)}°F")      # 32.0
print(f"100°C = {celsius_na_fahrenheit(100)}°F")  # 212.0
print(f"32°F = {fahrenheit_na_celsius(32)}°C")    # 0.0
print(f"98.6°F = {fahrenheit_na_celsius(98.6):.1f}°C")  # 37.0
Srednie

Zadanie 3: Funkcja sprawdzajaca pierwszosc

Napisz funkcje czy_pierwsza(n), ktora zwraca True jesli n jest liczba pierwsza, False w przeciwnym przypadku. Uzyj jej do wypisania wszystkich liczb pierwszych od 1 do 100.

Pokaz rozwiazanie
import math

def czy_pierwsza(n):
    if n < 2:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

print("Liczby pierwsze od 1 do 100:")
for i in range(1, 101):
    if czy_pierwsza(i):
        print(i, end=" ")
Trudne

Zadanie 4: Kalkulator BMI

Napisz funkcje oblicz_bmi(waga, wzrost), ktora oblicza BMI (waga/wzrost^2) oraz funkcje interpretuj_bmi(bmi), ktora zwraca opis slowny (niedowaga, norma, nadwaga, otylosc).

Pokaz rozwiazanie
def oblicz_bmi(waga_kg, wzrost_m):
    return waga_kg / (wzrost_m ** 2)

def interpretuj_bmi(bmi):
    if bmi < 18.5:
        return "niedowaga"
    elif bmi < 25:
        return "waga prawidlowa"
    elif bmi < 30:
        return "nadwaga"
    else:
        return "otylosc"

waga = float(input("Podaj wage (kg): "))
wzrost = float(input("Podaj wzrost (m): "))

bmi = oblicz_bmi(waga, wzrost)
print(f"Twoje BMI: {bmi:.1f}")
print(f"Kategoria: {interpretuj_bmi(bmi)}")
🎥

Materialy wideo

Funkcja kwadratowa z parametrem, wzory wjeta (Wzory Viete'a), O co w tym chodzi?
PATOMATMA
Jak rozwiązać RÓWNANIA KWADRATOWE z PARAMETREM-PEWNIAK MATURALNY (1/4: Wzory Viète’a i zastosowanie)
A po co MI ta MATMA?
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 12: Algorytmy na liczbach Lekcja 14: Testowanie programow →