Zmienne – jak zapamiętać wartość i użyć jej ponownie
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Na poprzedniej lekcji wpisywałeś wartości wprost do polecenia print. Gdy ta sama wartość ma pojawić się w programie pięć razy, wpisywanie jej pięć razy jest niewygodne, a poprawianie w pięciu miejscach kończy się pomyłką. Zmienne rozwiązują ten problem – i są fundamentem wszystkiego, co robimy przez resztę roku.
Po tej lekcji:
- utworzysz zmienną i wypiszesz jej wartość,
- zobaczysz różnicę między
print(imie)aprint("imie"), - zrozumiesz, że znak
=przypisuje, a nie porównuje, - będziesz wiedzieć, co znaczy
NameErrori jak go naprawić.
Zmienna to nazwa dla wartości
Zapis jest krótki: nazwa, znak równości, wartość. Python zapamiętuje wartość i wiąże ją z nazwą. Od tej chwili w każdym miejscu programu możesz napisać samą nazwę.
imie = "Anna"
wiek = 17
print(imie) # Anna
print("imie") # imie
print(imie, wiek) # Anna 17
- Nie deklarujesz typu ani niczego nie zapowiadasz – wystarczy przypisanie.
- Nazwy używasz bez cudzysłowu. Cudzysłów oznaczałby dosłowny tekst.
print("imie")wypisze słowo imie.print(imie)wypisze to, co siedzi w zmiennej. Tę różnicę trzeba widzieć od razu.
Znak = nie oznacza równości
Czytaj go jako „przypisz”. Zapis wiek = 17 nie mówi „wiek jest równy 17”, tylko: weź wartość 17 i włóż ją do zmiennej wiek. Działanie idzie z prawej strony w lewą.
wiek = 17
za_rok = wiek + 1 # najpierw obliczenie, potem przypisanie
licznik = 0
licznik = licznik + 1 # weź obecną wartość, dodaj 1, wstaw z powrotem
Zapis licznik = licznik + 1 jako równanie matematyczne nie ma sensu. Jako polecenie ma sens – i będziesz go używać w każdej pętli.
Nazwy zmiennych – co wolno, a co nie
- Bez spacji i polskich znaków:
srednia_ocen, a nieśrednia ocen. - Nie zaczynają się od cyfry:
ocena1, a nie1ocena. - Małe litery, słowa łączone podkreśleniem:
liczba_uczniow, a nieLiczbaUczniow. - Nazwa mówi, co jest w środku:
cena_brutto, a niex2.
Python rozróżnia wielkość liter: wiek i Wiek to dwie różne zmienne. Dobra nazwa oszczędza komentarz – jeśli zmienna nazywa się cena_brutto, nikomu nie trzeba tłumaczyć, co w niej jest.
Wartość można zmieniać
Dlatego nazywa się „zmienna”. Kolejne przypisanie do tej samej nazwy nadpisuje poprzednią wartość – stara znika bezpowrotnie.
wiek = 17
print(wiek) # 17
wiek = 18
print(wiek) # 18
Liczy się to, co było w zmiennej w momencie użycia. To częsta pułapka przy czytaniu cudzego kodu: ta sama nazwa w dwóch miejscach może zawierać dwie różne wartości.
NameError – użyłeś nazwy, której nie ma
Są dwie przyczyny, obie proste:
- Literówka. Przypisałeś do
srednia, a próbujesz wypisaćsrednai. - Kolejność. Użyłeś zmiennej w linii, która wykonuje się przed przypisaniem. Python czyta program od góry do dołu i w tym momencie nazwa jeszcze nie istnieje.
Naprawa jest zawsze taka sama: porównaj pisownię w obu miejscach albo przenieś przypisanie wyżej. Komunikat podaje nazwę, której Python nie znalazł – to zwykle wystarcza, żeby od razu zobaczyć literówkę.
Spróbuj sam
W kodzie z lekcji usuń # z linii print(nieistniejaca_zmienna) i uruchom program – zobaczysz prawdziwy NameError.
Zadania z lekcji:
- Utwórz trzy zmienne: imię, nazwisko i wiek. Wypisz je w jednej linii, rozdzielone przecinkami w poleceniu
print. - Utwórz zmienną
cenao wartości 100 i drugą,cena_po_rabacie, policzoną jako cena minus 20. Wypisz obie. - Utwórz zmienną
liczniko wartości 0. Zwiększ ją trzy razy o jeden i po każdym zwiększeniu wypisz jej wartość. - Popraw program, w którym celowo jest literówka w nazwie zmiennej. Zapisz w komentarzu, jaki komunikat pokazał Python.
Sprawdź się
- Umiem utworzyć zmienną i wypisać jej wartość.
- Widzę różnicę między
print(imie)aprint("imie"). - Rozumiem, że znak
=przypisuje, a nie porównuje. - Wiem, co znaczy NameError i jak go naprawić.
Na następnej lekcji: typy danych. Okaże się, że 5 i "5" to dla Pythona dwie zupełnie różne rzeczy.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.