3. Python – zmienne


Szybki quiz – przypomnienie poprzedniej lekcji

1. Co zostanie wyświetlone?

print("2024", "01", "15", sep="/")
Odpowiedź

2024/01/15. Parametr sep zmienia separator wstawiany między wartościami (domyślnie jest to spacja).

2. Co zostanie wyświetlone?

print("Loading", end="...")
print("Done!")
Odpowiedź

Odpowiedź: Loading...Done! w jednej linii. Parametr end zastępuje domyślny znak nowej linii (\n).

3. Znajdź błąd w kodzie.

print("Witaj')
Odpowiedź

Odpowiedź: Napis zaczyna się od ", a kończy na '. Cudzysłów otwierający i zamykający muszą być takie same, np. print("Witaj") albo print('Witaj').

4. Co zostanie wyświetlone?

# print("A")
"""
print("X")
"""
print("Y")  # print("Z")
Odpowiedź

Odpowiedź: Y. Linia z # jest komentarzem. Tekst w potrójnych cudzysłowach, który nie jest przypisany do zmiennej, Python ignoruje. Fragment po # na końcu ostatniej linii też jest pomijany.

5. Jak według PEP 8 zapiszesz nazwy: a) zmiennej przechowującej imię użytkownika, b) stałej z maksymalną liczbą prób, c) klasy konta użytkownika?

Odpowiedź

Odpowiedź: a) user_name (snake_case), b) MAX_ATTEMPTS (UPPER_CASE), c) UserAccount (PascalCase).

6. Co oznacza znak >>> w interaktywnej konsoli Pythona (REPL) i jak z niej wyjść?

Odpowiedź

Odpowiedź: >>> to prompt, czyli Python czeka na polecenie. Wyjście: exit() lub quit().

JAK DEFINIUJEMY ZMIENNE

Zmienna, to nic innego jak kontener przechowujący w sobie pewną wartość, którą można „podmieniać” w trakcie realizacji skryptu.

Taka wartość zajmuje w pamięci komputera pewne miejsce, a podając nazwę zmiennej dostajemy się do konkretnego obszaru, który ona zajmuje.

Zmienna zmiennej nie jest równa. Inną przestrzeń zajmie liczba, a inną tekst, nie zapominajmy też o tym, że mamy różne rodzaje liczb: całkowite, zmiennoprzecinkowe itd. Więcej o tym w temacie związanym z typami danych.

W celu zdefiniowania zmiennej w Python, należy podać jej nazwę i przypisać jej wartość za pomocą operatora „=”:

name = "Ala" 
liczba = 10

gdzie name i liczba to nazwy zmiennych.

Podczas tworzenia nazw zmiennych powinniśmy przestrzegać pewnych zasad:

  • nazwa zmiennej nie może rozpoczynać się od cyfry
  • nie powinna zawierać polskich znaków
  • w nazwie nie umieszczamy spacji
  • używamy tylko liter, cyfr i znaków podkreślnika
  • rozróżniana jest wielkość liter

Przykład praktyczny

Stwórzmy plik variables.py i przećwiczmy podstawy:

#deklarujemy zmienną
zmienna = "zmienna"
print(zmienna)


#nadpisujemy zmienną
zmienna = 100
print(zmienna)

#wielkość liter jest ważna
Zmienna = "Zmienna"

print("zmienna = ",zmienna)
print("Zmienna = ",Zmienna)
#jak możemy zauważyć wyświetlają się 2 różne wartości

#deklaracja wielu zmiennych na raz
x, y, z = "Orange", "Banana", "Cherry"
print(x)
print(y)
print(z)

x = y = z = "Orange"
print(x)
print(y)
print(z)

Jak zapewne zauważyliście, w kodzie wykorzystałam operator łączenia „przecinek”. Za jego pomocą do wyświetlanej treści możemy „doklejać” kolejne elementy bez konieczności konwersji typów. Kolejnym sposobem „doklejania” kolejnych elementów jest stosowanie „+”. Taki operator nazywa się operatorek KONKATENACJI

Formatujemy wyświetlanie zmiennych

user = "Kama"
msg = "Witaj USER na mojej stronie"

#chcemy zamiast słowa USER umieścić zawartość zmiennej "user"

"""
Jedną z najbardziej intuicyjnych metod formatowania wyświetlanych danych jest użycie f""
przed napisem umieszczamy literkę "f", a wewnątrz tekstu w {} umieszczamy nazwę zmienej do wyświetlenia
"""

msg = f"Witaj {user} na mojej stronie"
print(msg)

#korzystamy z funkcji .format()
#wewnątrz napisu do wyświetlenia umieszczamy {}, a poza nim używamy funkcji format i podajemy w nawiasie zmienną, która ma sie wyświetlić

msg = "Witaj {} na mojej stronie".format(user)
print(msg)

#korzystamy z %
#wewnątrz napisu do wyświetlenia umieszczamy %, a poza nim wstawiamy % i podajemy nazwę zmiennej, która ma sie wyświetlić

msg = "Witaj %s na mojej stronie" % user
print(msg)

Ćwiczenia praktyczne

1. Korzystając z funkcji print() wydrukuj do konsoli tekst: Ucz się Pythona!

 2. Przypisz do zmiennej age wartość 20. Korzystając ze zmiennej age oraz funkcji print() wydrukuj do konsoli tekst: Mam 20 lat.

3. Przypisz dwie zmienne. Pierwsza ma przechowywać nazwę języka Python, druga wersję języka 3.8. Wydrukuj: Uczę się języka Python w wersji 3.8

4. Przypisz do zmiennej price wartość 19.99. Wydrukuj: Towar kosztuje 19.99

5. Odbierz od użytkownika jego imię i wyświetl powitanie: Witaj <imię>! (informacje o tym, jak pobieramy dane od użytkownika znajdziesz w temacie 6.)

6. Przypisz dwie zmienne przechowujące cenę produktu 34.99 PLN (float) oraz wagę produktu 10 kg (int). Wydrukuj: Cena: 34.99 PLN. Waga: 10 kg

7. Zadeklaruj stałą pi = 3.1415926535, używając f-string wydrukuj przybliżenie liczby pi do drugiego miejsca po przecinku: Przybliżenie liczby pi: 3.14

8. Używając trzech funkcji print() wydrukuj:

----------------------------------------
WERSJA: 1.0.1
----------------------------------------

9. Używając czterech funkcji print() wydrukuj:

========================================
autor: jannowak@poczta.com
data: 01-01-2021
========================================

10. Używając funkcji print() oraz argumentu sep ustawionego na znak # wydrukuj: summer#time#holiday

11. Zadeklaruj 2 zmienne. Wyświetl je w konsoli, a następnie zmień ich wartości i wyświetl ponownie.

PODSUMOWANIE

  • Zmienna to nazwa wskazująca wartość zapisaną w pamięci. Tworzymy ją przez przypisanie: nazwa = wartość. Znak = oznacza „przypisz”, a nie „jest równe”.
  • Ponowne przypisanie nadpisuje poprzednią wartość. W przykładzie z lekcji zmienna najpierw przechowuje tekst, a po zmienna = 100 liczbę.
  • Zasady nazw: nie zaczynamy od cyfry, nie używamy spacji ani polskich znaków, stosujemy tylko litery, cyfry i _.
  • Wielkość liter ma znaczenie: zmienna i Zmienna to dwie różne zmienne.
  • Kilka zmiennych naraz:
    • x, y, z = "Orange", "Banana", "Cherry" – każda zmienna dostaje inną wartość,
    • x = y = z = "Orange" – wszystkie dostają tę samą wartość.
  • Zmienną wstawiamy do wyświetlanego tekstu na kilka sposobów:
    • przecinek w print() – wartości są rozdzielane spacją, bez konwersji typów,
    • + – konkatenacja, czyli łączenie napisów,
    • f-string – f"... {zmienna} ...",
    • metoda .format() – "... {} ...".format(zmienna),
    • operator % – "... %s ..." % zmienna.
  • Zmienna w cudzysłowie to zwykły tekst. Dopiero zapis bez cudzysłowu odwołuje się do wartości zmiennej.
  • Nazwy zmiennych piszemy w stylu snake_case (PEP 8, lekcja 2).

Minimum, które powinno wejść w pamięć

Jeżeli masz zapamiętać tylko kilka rzeczy z tej lekcji, zapamiętaj te:

  1. nazwa = wartość tworzy zmienną, a kolejne przypisanie nadpisuje starą wartość.
  2. Nazwa nie może zaczynać się od cyfry, nie ma spacji, składa się z liter, cyfr i _.
  3. zmienna ≠ Zmienna, bo wielkość liter ma znaczenie.
  4. x, y = 1, 2 daje różne wartości, a x = y = 1 daje tę samą wartość wszystkim zmiennym.
  5. print("x") wyświetla tekst x, a print(x) wyświetla wartość zmiennej x.
  6. Najwygodniejszy sposób wstawiania zmiennych do tekstu to f-string. Pamiętaj o literze f przed cudzysłowem i nawiasach {} wokół nazwy.
  7. Przecinek w print() wstawia spację i nie wymaga konwersji typów, a + łączy napisy bez spacji.
  8. Nazwy zmiennych piszemy w snake_case (user_name).

Ściągawka – najważniejsze polecenia i składnia

Tworzenie zmiennych

name = "Ala"                      # utworzenie
name = "Ola"                      # nadpisanie
x, y, z = "Orange", "Banana", "Cherry"   # różne wartości
x = y = z = "Orange"                     # ta sama wartość

Zasady nazw

ZasadaDobrzeŹle
nie zaczyna się od cyfryplace_22place
bez spacjiuser_nameuser name
tylko litery, cyfry i _max_valuemax-value
wielkość liter ma znaczeniezmienna ≠ Zmienna 

Wyświetlanie zmiennych (user = "Kama")

SposóbZapisWynik
przecinekprint("Witaj", user)Witaj Kama
konkatenacja +print("Witaj " + user)Witaj Kama
f-stringprint(f"Witaj {user}!")Witaj Kama!
.format()print("Witaj {}!".format(user))Witaj Kama!
%print("Witaj %s!" % user)Witaj Kama!

Formatowanie liczby w f-stringu (potrzebne do ćwiczenia 7; lekcja nie wprowadza tego zapisu):

pi = 3.1415926535
print(f"Przybliżenie liczby pi: {pi:.2f}")   # Przybliżenie liczby pi: 3.14

:.2f oznacza „2 miejsca po przecinku”.

Przypomnienie z lekcji 2 (przydatne w ćwiczeniach 8–10)

print("a", "b", "c", sep="#")   # a#b#c
print("Loading", end="...")     # bez przejścia do nowej linii

Typowe błędy

BłądSkutek / poprawka
2name = "Ala"nazwa zaczyna się od cyfry, zmień na np. name2
Name = "Ala" i potem print(name)to dwie różne nazwy, wywołujesz zmienną, której nie utworzyłeś
print("Witaj {user}")brak f, wyświetli się dosłownie {user}
print("user") zamiast print(user)wyświetli się tekst user, a nie wartość zmiennej
user name = "Ala"spacja w nazwie

Quiz – sprawdź się

1. Która nazwa zmiennej jest poprawna?
a) 2liczba b) moja liczba c) moja_liczba d) liczba-1

2. Co zostanie wyświetlone?

x = 5
x = 8
print(x)

3. Dlaczego ten kod nie działa?

Zmienna = "tekst"
print(zmienna)

4. Co zostanie wyświetlone?

a, b = "A", "B"
x = y = "X"
print(a, b, x, y)

5. Znajdź błąd w kodzie i popraw go.

2nd_place = "Ania"
print(2nd_place)

6. Znajdź błąd w kodzie. Dlaczego wynik nie jest zgodny z oczekiwaniem?

user = "Kama"
print("Witaj {user}!")

Oczekiwany wynik: Witaj Kama!

7. Uzupełnij kod, aby wyświetlił Uczę się języka Python w wersji 3.8.

language = "Python"
version = 3.8
print(___"Uczę się języka {language} w wersji {version}")

8. Co zostanie wyświetlone?

name = "Ala"
print("name")
print(name)

9. Jak jedną instrukcją print() wyświetlić summer#time#holiday?

10. Zadanie praktyczne. Przypisz do zmiennej price wartość 19.99 i wyświetl Towar kosztuje 19.99 na dwa różne sposoby.

Odpowiedzi

1. c) moja_liczba. Odpowiedź a) zaczyna się od cyfry, b) ma spację, d) zawiera myślnik, którego nie wolno używać w nazwie.

2. 8. Drugie przypisanie nadpisało wartość 5.

3. Python rozróżnia wielkość liter. Utworzono zmienną Zmienna, a print odwołuje się do zmienna, której nie ma. Poprawka: ujednolić zapis nazwy.

4. A B X X. Przy a, b = "A", "B" każda zmienna dostaje własną wartość, a przy x = y = "X" obie dostają "X". Przecinek w print() rozdziela wartości spacją.

5. Nazwa zmiennej nie może zaczynać się od cyfry. Poprawnie np. second_place = "Ania" albo place_2 = "Ania".

6. Brakuje litery f przed napisem, więc {user} nie jest zamieniane na wartość i wyświetli się Witaj {user}!. Poprawnie: print(f"Witaj {user}!").

7. f – print(f"Uczę się języka {language} w wersji {version}").

8.

name
Ala

"name" w cudzysłowie to zwykły tekst, a name bez cudzysłowu to wartość zmiennej.

9. print("summer", "time", "holiday", sep="#")

10. Przykładowe rozwiązania:

price = 19.99
print("Towar kosztuje", price)
print(f"Towar kosztuje {price}")

Poprawne są też: print("Towar kosztuje {}".format(price)) oraz print("Towar kosztuje %s" % price).