Funkcje
Do przygotowania przed zajęciami
* Python dla każdego. Podstawy programowania. – Michael Dawson – Helion **R** – Rozdział 5. Wprowadzenie. Koniec gry.
Cel i tematyka zajęć
Drugie laboratorium ma na celu utrwalenie wiadomości z trzeciego laboratorium oraz wprowadzenie następujących elementów:
* sekwencje zagnieżdżone,
* funkcje,
* projekt,
– Zadanie przypominające
* Napisz program wczytujący z klawiatury 10 liczb całkowitych, zapisujący je do listy, a następnie wyświetlający je na ekranie.
* Napisz program Kto jest twoim tatą, który umożliwia wpisanie imienia i nazwiska osoby płci męskiej i przedstawia imię i nazwisko jej ojca. Program rozbuduj tak aby umożliwiał znalezienie dziadka, przy czym nadal w programie mają się znajdować pary syn ojciec.
– Sekwencje zagnieżdżone
Podczas tworzenia oprogramowania niejednokrotnie będą potrzebowali Państwo zastosować sekwencje zagnieżdżone, proszę jednak pamiętać, że dobrą praktyką jest stosowanie nie więcej niż trzech poziomów zagnieżdżenia.
Przykłady sekwencji zagnieżdżonych:
scores = [(name0, score0), (name1, score1), (name2, score2)]
np.
scores = [("Alfred", 10), ("Janek", 5), ("Krystian", 15)]
Sekwencje zagnieżdżone możemy rozpakowywać jeżeli wiemy ile elementów zawiera sekwencja:
name, score = scores[1]
Dostęp do poszczególnych elementów sekwencji zagnieżdżonych
a_score = scores[2]
– Gra w skojarzenia
Struktury złożone można w sobie zagnieżdżać. Poniżej w programie występuje słownik skojarzeń.
Z każdym słowem w słowniku powiązana jest lista jego skojarzeń.
Użytkownik ma za zadanie podać swoje skojarzenia do podanego słowa.
Jeśli jego skojarzenia są podobne do tych zawartych w liście zdobywa punkt.
associations = {'zwierze': ['pies','kot','chomik'],
'owoc': ['jablko','gruszka','pomarańcza'],
'roslina': ['kaktus','storczyk','drzewo']
}
points = 0
for word in associations:
guess = input('Co ci sie kojarzy ze slowem {}? '.format(word))
if guess in associations[word]:
points += 1
print("Masz", points, "punkty")
Funkcje
Z czasem będziecie Państwo tworzyć coraz bardziej rozbudowane programy i tworzenie ich poprzez wpisywanie instrukcji pod instrukcjami w jednym ciągu spowoduje duże trudności ze zrozumieniem kodu i wyszukiwaniem w nim błędów. Z pomocą przychodzą nam w tedy funkcję.\\
Wykorzystanie funkcji wprowadza do programu pewien poziom abstrakcji.\\
Abstrakcja pozwala myśleć o ogólnym obrazie bez troszczenia się o szczegóły (używając funkcji programista nie martwi się jak jest ona zbudowana).\\
Funkcja stworzona przez programistę tak samo jak i te wbudowane powinny wykonywać dobrze jedno zadanie.\\
Funkcję tworzymy w następujący sposób:
def nazwaFunkcji():
"""opis funkcji"""
instrukcje wewnątrz funkcji
np.:
def instructions():
"""Wyświetl instrukcję gry."""
print(
"""
Witaj w największym intelektualnym wyzwaniu wszech czasów, jakim jest
gra 'Kółko i krzyżyk'. Będzie to ostateczna rozgrywka między Twoim
ludzkim mózgiem a moim krzemowym procesorem.
Swoje posunięcie wskażesz poprzez wprowadzenie liczby z zakresu 0 - 8.
Liczba ta odpowiada pozycji na planszy zgodnie z poniższym schematem:
0 | 1 | 2
---------
3 | 4 | 5
---------
6 | 7 | 8
Przygotuj się, Człowieku. Ostateczna batalia niebawem się rozpocznie. \n
"""
)
– Wywołanie funkcji
Funkcję wywołujemy poprzez podanie jej nazwy:
#main
instructions()
– Dokumentowanie funkcji
Do dokumentowania funkcji wykorzystujemy tzw. łańcuch dokumentujący – zapisujemy go zaraz po deklaracji funkcji:
def instructions():
"""Wyświetl instrukcję gry.""" #łańcuch dokumentujący
– Pobieranie wartości przez funkcję
Funkcje mogą pobierać wartości na których mają operować:
def display(message):
''' funkcja wyświetlająca wiadomość'''
print(message)
– Zwracanie wartości przez funkcję
Funkcje mogą również zwracać pewne wartości:
def give_me_five():
'''Funkcja zwracająca wartość'''
five = 5
return five
-Argumenty nazwane oraz domyślne wartości parametrów
Argumenty wykorzystujemy, aby przekazać do funkcji wartości.\\
Parametry pozycyjne
def birthday1(name, age):
print("Szczęśliwych urodzin,", name, "!", " Masz już", age, "lat.\n")
#wywolania
birthday1("Adaś", 3)
birthday1(3, "Adaś")
birthday1(name = "Adaś", age = 3)
birthday1(age = 3, name = "Adaś")
Parametry z wartościami domyślnymi
def birthday2(name = "Janusz", age = 5):
print("Szczęśliwych urodzin,", name, "!", " Masz już", age, "lat.\n")
birthday2()
birthday2(name = "Katarzyna")
birthday2(age = 12)
birthday2(name = "Katarzyna", age = 12)
birthday2("Katarzyna", 12)
– Zadania do samodzielnego wykonania na laboratorium
* Napisz funkcję SUMA wyznaczającą sumę dwóch zadanych liczb całkowitych. Napisz program wykorzystujący funkcję SUMA
* Napisz funkcję, która ma trzy parametry formalne a, b, c będące liczbami całkowitymi. Wartością funkcji jest jeden, jeśli zadane liczby są liczbami pitagorejskimi oraz zero w przeciwnym wypadku. Liczby pitagorejskie spełniają warunek: a*a+b*b=c*c.
* Napisz funkcję, która wyznacza n-tą (n jest liczba naturalną) potęgę zadanej liczby rzeczywistej x. Funkcja ma wykorzystywać iterację.
– Przykłady używane na laboratoriach
Przykłady pochodzą z książki
* Podstawową książką wykorzystywaną na laboratorium będzie: „Python dla każdego. Podstawy programowania Wydanie III”, autor Michael Dawson, Wydawnictwo Helion **(R)**
Zadanie domowe
**Wszystkie zadania domowe należy archiwizować ponieważ w dalszej części laboratoriów będziecie je Państwo rozbudowywać**
* Zobacz: https://www.youtube.com/watch?v=ybRVhUtdHs8
* Stwórz funkcję “menu” dla swojej gry umożliwiające co najmniej:
* wyświetlenie najlepszych wyników
* dodawanie wyników
* rozpoczęcie nowej gry
* Napisz funkcję postać, która realizuje tworzenie postaci
* Python dla każdego. Podstawy programowania. – Michael Dawson – Helion **R** – Rozdział 6.