4. Functions

  • Gives possibility to reuse code,

  • Gives as chance to track code,

  • Splitting is more logical than executing code line by line

Different definitions of functions

def function_a():
    """"Docstring documenting function"""

    print('This is simple function')

# "Execution" of a function
function_a()
This is simple function

4.1. Function with parameteres

def sum_of_three_numbers(a, b, c):
    """Function calculating sum of three numbers"""

    print(a + b + c)

result = sum_of_three_numbers(3, 5, 8)
print(result)
16
None
def sum_of_four_numbers(a, b, c=0, d=0):
    """Simple function suming 4 numbers with default 4th param"""

    return (a + b + c + d)

print(sum_of_four_numbers(3, 5))
print(sum_of_four_numbers(3, 5, 8))
print(sum_of_four_numbers(3, 5, 8, 16))
8
16
32

4.2. Args

def sum_of_many(show, *nums):
    res_sum = 0

    for num in nums:
        res_sum += num

    if show:
        print('Suma wynosi {}'.format(res_sum))
    return res_sum

wynik = sum_of_many(True, 1, 2, 3, 4, 5, 6, 7)
print(wynik)
Suma wynosi 28
28

4.3. Kwargs

def res_sum_zarobkow(**kwargs):
    """sumuje wszystkie osoby"""

    res_sum = 0

    for czlowiek, zarobki in kwargs.items():
        res_sum += zarobki
    return res_sum

print(res_sum_zarobkow(Adam=3000, Tomek=2500, Kasia=4320))
9820

4.4. Zadania

4.4.1. Pierwsze

  • Nie użytkownik poda swój wiek, sprawdź czy jest pełnoletni,

  • Niech użytkownik poda liczbę, sprawdź czy num ta jest int czy float

4.4.2. Drugie

  • Stwórz prostą funkcję która będzie sprawdzała siłę hasła (własny algorytm)

  • Hasło może być przynajmniej 6 literowe, maksymalnie 9

  • Hasło jest tyle mocniejsze, gdy:

    • Posiada wielkie litery,

    • Posiada liczbę,

    • Posiada znak specjalny (możesz sam zdefiniować listę specjalną np. ['_', '*', '&']

4.4.3. Trzecie

  • Zmodyfikuj kod na liczenie BMI - tak aby była to teraz funkcja, która dodatkowo przyjmuje

    • Imię,

4.4.4. Czwarte

  • Napisz funkcje dane_zarobkow(dzial, statystyki=True, *args) która dla podanego dzialu zwróci średnią zarobków działu - zaokrąglij do pełnych złotówek

  • Dodatkowo gdy flaga statystyki jest wlączona funkcja opisze więcej statystyk:

    • Średnią,

    • Medianę (własna funkcja),

    • Minimalna wartosc,

    • Maksymalną wartość

Hint

W celu obliczenia mediany można napisać funkcję. Można także wykorzystać rozwiązanie z bibliotek