Python • kurs podstawowy • lekcja 19
Krotki i rozpakowanie
Współrzędne punktu tworzą mały zestaw dwóch wartości.
Twój cel: Rozpakujesz krotkę i wyjaśnisz, co oznacza jej niemutowalność.Listy i przypisanie.
Zbuduj model działania
Krotka, czyli tuple, przechowuje elementy w kolejności, ale nie pozwala zastąpić elementu przez przypisanie do indeksu. Możesz odczytać point[0], lecz point[0] = 5 nie zadziała.
Zapis x, y = point rozpakowuje wartości w kolejności. Przy prostym rozpakowaniu liczba nazw musi odpowiadać liczbie elementów. To ten sam mechanizm, który pozwalał odbierać pary z enumerate i zip.
Krotkę tworzy przecinek: jednoelementową zapiszesz (5,), a (5) jest po prostu liczbą w nawiasie. Pusta krotka to (). Niemutowalność krotki nie oznacza, że nazwy nie można przypisać do nowej krotki. Jeśli jej elementem jest lista, sama lista nadal może się zmieniać; w tej lekcji używamy tylko liczb i tekstów.
Przewidź przed uruchomieniem
point = (10, 20)
x, y = point
x, y = y, x
print(x)
print(y)
print(point)
Porównaj wynik i prześledź mechanizm
20, 10 i (10, 20). Najpierw rozpakowano dwie wartości. Przy zamianie prawa strona odczytuje obie stare wartości przed przypisaniem. point nadal wskazuje pierwotną krotkę.
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
20
10
(10, 20)
| Etap | x | y | point |
|---|---|---|---|
| Rozpakowanie | 10 | 20 | (10, 20) |
| Zamiana | 20 | 10 | (10, 20) |
Zmień działający program
Zwróć dwie wartości z funkcji przez return number, number ** 2 i rozpakuj wynik.
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 with_square(number):
return number, number ** 2
value, square = with_square(3)
print(value, square)
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
3 9
Znajdź przyczynę problemu
Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.
Zamierzone działanie: Rozpakuj trzy współrzędne punktu 3D.
x, y = (10, 20, 30)
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
Krotka zachowuje strukturę elementów. Rozpakowanie przypisuje wartości według kolejności.
Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:
size = (800, 600)
Rozwiązanie do samodzielnej kontroli
size = (800, 600)
width, height = size
print(width * height)
portrait = (height, width)
print(portrait)
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
480000
(600, 800)
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?
Krotka zachowuje strukturę elementów. Rozpakowanie przypisuje wartości według kolejności.
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.