Krotki i rozpakowanie

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Krotki i rozpakowanie
Required In Progress

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
Krotka zachowuje strukturę elementów. Rozpakowanie przypisuje wartości według kolejności.
Krotka zachowuje strukturę elementów. Rozpakowanie przypisuje wartości według kolejności.

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)
Model do prześledzenia: porównaj każdy etap z kodem. Etykiety opisują znaczenie danych, nie tylko ich wygląd.

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.