Python • kurs podstawowy • lekcja 16
Pierwsze funkcje
W programie kilka razy pojawia się ten sam nagłówek.
Twój cel: Wydzielisz powtarzalne instrukcje do funkcji i odróżnisz definicję od wywołania.Bloki z wcięciami i kolejność wykonania.
Zbuduj model działania
Kopiowanie linii utrudnia późniejsze poprawki. Funkcja nadaje nazwę fragmentowi zachowania: zmieniasz definicję w jednym miejscu, a każde wywołanie korzysta z nowej treści.
def rozpoczyna definicję. Po nazwie zapisujemy nawiasy i dwukropek. Wcięte instrukcje tworzą ciało funkcji. Wykonanie def tworzy funkcję i wiąże ją z nazwą; nie uruchamia jej ciała. Wywołanie z nawiasami uruchamia instrukcje, a potem program wraca do miejsca po wywołaniu.
W tej lekcji funkcje nie pobierają danych i tylko wyświetlają tekst. Nie potrzebujesz jeszcze parametrów ani return. Definicja musi być wykonana, zanim program dotrze do wywołania. Zapisanie samej nazwy bez nawiasów nie wykonuje ciała.
Przewidź przed uruchomieniem
def show_header():
print("=== GRA ===")
print("Witaj!")
print("Przed")
show_header()
print("Po")
show_header()
Porównaj wynik i prześledź mechanizm
Witaj! pojawi się dwa razy, a pierwszym wierszem będzie Przed. Definicja nie drukuje nagłówka; robią to dopiero dwa wywołania show_header().
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
Przed
=== GRA ===
Witaj!
Po
=== GRA ===
Witaj!
| Krok | Miejsce wykonania |
|---|---|
| def show_header | Utwórz funkcję |
| print("Przed") | Program główny |
| show_header() | Ciało funkcji → powrót |
| print("Po") | Program główny |
| show_header() | Ciało funkcji → powrót |
Zmień działający program
Wywołaj funkcję trzy razy w pętli, zamiast kopiować trzy wywołania.
Pierwsza wskazówka
Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.
Porównaj swoją modyfikację
def show_header():
print("=== GRA ===")
print("Witaj!")
for repeat in range(3):
show_header()
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
=== GRA ===
Witaj!
=== GRA ===
Witaj!
=== GRA ===
Witaj!
Znajdź przyczynę problemu
Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.
Zamierzone działanie: Wyświetl menu przez wywołanie funkcji.
def show_menu():
print("1. Start")
show_menu
Trop do diagnozy
Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.
Zastosuj w nowej sytuacji
Wskazówka do rozpoczęcia
Definicja przygotowuje zachowanie. Wywołanie wykonuje je i pozwala wrócić do dalszego programu.
Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:
def show_separator():
Rozwiązanie do samodzielnej kontroli
def show_separator():
print("----------")
show_separator()
print("Wynik: 12")
show_separator()
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
----------
Wynik: 12
----------
Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.
Co zabierasz do kolejnego programu?
Definicja przygotowuje zachowanie. Wywołanie wykonuje je i pozwala wrócić do dalszego programu.
Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.