Lekcja 1. Zmienne i typy danych w Pythonie
latwyPo co się tego uczymy?
Python jest głównym językiem części komputerowej matury z informatyki (Arkusz II, 150 minut) — a każdy program, niezależnie od tego, jak skomplikowany, zaczyna się od tego samego: przechowywania danych w zmiennych. Bez pewnego opanowania typów danych nie da się poprawnie napisać ANI PRZECZYTAĆ żadnego kolejnego zagadnienia z tego kursu — od instrukcji warunkowych po algorytmy z działu obok.
Teoria
Zmienna to nazwane miejsce w pamięci komputera, w którym przechowywana jest wartość. W Pythonie NIE deklarujemy jawnie typu zmiennej (jak w C# przez int/string) — wystarczy przypisać wartość, a Python sam rozpozna typ. To tzw. typowanie dynamiczne: ta sama zmienna może w trakcie działania programu zmienić typ (choć w praktyce dobrym zwyczajem jest tego unikać, dla czytelności kodu).
Cztery podstawowe typy danych:
int— liczba całkowita, bez ograniczenia rozmiaru w Pythonie (w przeciwieństwie do C#, gdzieintma sztywny zakres) — np.7,-42,1000000000000.float— liczba zmiennoprzecinkowa (z częścią po przecinku), np.3.14,-0.5. UWAGA: obliczenia nafloatmogą mieć drobne błędy zaokrągleń (patrz dział "Sieci i sprzęt komputerowy" — reprezentacja IEEE 754).str— łańcuch znaków (tekst), zapisywany w cudzysłowie pojedynczym'tekst'lub podwójnym"tekst"— oba zapisy są RÓWNOWAŻNE w Pythonie.bool— wartość logiczna:TruealboFalse(WIELKIE litery — to ważne,truemałymi literami nie zadziała).
Sprawdzanie typu — funkcja type(zmienna) zwraca DOKŁADNY typ danej wartości. Przydaje się to zwłaszcza przy debugowaniu, gdy program zachowuje się inaczej, niż oczekujemy.
Konwersja typów (rzutowanie) — Python pozwala jawnie zamienić jeden typ na inny: int("15") zamienia tekst na liczbę całkowitą, float("3.5") na liczbę zmiennoprzecinkową, str(42) na tekst. To NIEZBĘDNE, bo funkcja input() (pobierająca dane od użytkownika) ZAWSZE zwraca str — nawet jeśli użytkownik wpisze liczbę.
Zasady nazewnictwa zmiennych w Pythonie — nazwa musi zaczynać się od litery lub podkreślnika (nie od cyfry), może zawierać litery, cyfry i podkreślniki, jest WRAŻLIWA na wielkość liter (wiek i Wiek to DWIE różne zmienne). Konwencja w Pythonie (tzw. snake_case) to pisanie wieloczłonowych nazw małymi literami z podkreślnikiem: liczba_uczniow, nie liczbaUczniow (to z kolei konwencja C#/Javy, tzw. camelCase).
Formatowanie tekstu — f-string — najwygodniejszy sposób wstawiania wartości zmiennych do tekstu to poprzedzenie cudzysłowu literą f i umieszczenie zmiennych w klamrach: f"Masz {wiek} lat". To odpowiednik interpolacji stringów, znanej z innych języków (w C# to podobna składnia $"Masz {wiek} lat").
Schemat
ZMIENNA = "pudełko z etykietą" w pamięci:
wiek = 17 → [wiek] → 17 (typ: int)
pi = 3.14 → [pi] → 3.14 (typ: float)
imie = "Zosia" → [imie] → "Zosia" (typ: str)
pelnoletni = False → [pelnoletni] → False (typ: bool)
KONWERSJA (rzutowanie) - zawsze JAWNA w Pythonie:
tekst = input("Podaj wiek: ") → tekst ma typ str, NAWET dla "17"
wiek = int(tekst) → dopiero teraz to liczba
int("15") → 15 (str -> int)
str(42) → "42" (int -> str)
float("3.5") → 3.5 (str -> float)
Przykład z życia
Aplikacja do liczenia kalorii przechowuje: nazwę posiłku (str), liczbę kalorii (int), wagę porcji w gramach (float, bo bywa ułamkowa) i informację, czy posiłek był wegetariański (bool). To dokładnie te same cztery typy danych, których nauczysz się w tej lekcji — każda, nawet najbardziej złożona aplikacja, w gruncie rzeczy żongluje tymi samymi podstawowymi "klockami".
zmienne_i_typy.py
# Cztery podstawowe typy danych w Pythonie
wiek = 17 # int - liczba całkowita
srednia_ocen = 4.75 # float - liczba zmiennoprzecinkowa
imie = "Zosia" # str - tekst
pelnoletni = False # bool - wartość logiczna
print(f"Imię: {imie}, wiek: {wiek}, średnia: {srednia_ocen}")
print(f"Czy pełnoletnia? {pelnoletni}")
# Sprawdzanie typu funkcją type()
print(type(wiek)) # <class 'int'>
print(type(srednia_ocen)) # <class 'float'>
print(type(imie)) # <class 'str'>
print(type(pelnoletni)) # <class 'bool'>
# input() ZAWSZE zwraca tekst (str) - trzeba jawnie rzutować!
tekst_z_klawiatury = input("Podaj swój wiek: ")
print(type(tekst_z_klawiatury)) # <class 'str'> (nawet dla "17"!)
wiek_jako_liczba = int(tekst_z_klawiatury)
print(type(wiek_jako_liczba)) # <class 'int'>
print(f"Za 5 lat będziesz mieć {wiek_jako_liczba + 5} lat")
Komentarz i wyjaśnienie kodu
Zwróć uwagę, że NIE musieliśmy nigdzie napisać "to jest int" ani "to jest str" — Python sam rozpoznaje typ na podstawie WARTOŚCI, którą przypisujemy (typowanie dynamiczne). To duża różnica względem C#, gdzie musisz jawnie napisać int wiek = 17;.
tekst_z_klawiatury = input(...) zawsze zwraca str, NAWET jeśli użytkownik wpisze same cyfry — dlatego próba tekst_z_klawiatury + 5 (bez wcześniejszego int()) rzuciłaby błąd: Python nie potrafi dodać liczby do tekstu. Trzeba NAJPIERW jawnie zrzutować przez int().
f-string (f"...") automatycznie zamienia wartość zmiennej w tekst wewnątrz klamr {} — działa to dla KAŻDEGO typu (int, float, str, bool), bez potrzeby ręcznego wywoływania str().
Ćwiczenie samodzielne
Utwórz cztery zmienne opisujące Twój ulubiony film: tytuł (str), rok premiery (int), ocenę w skali 1-10 z częścią dziesiętną (float) i informację, czy polecasz go znajomym (bool). Wypisz wszystkie cztery wartości w jednym zdaniu przy pomocy f-stringa.
Plac zabaw — wypróbuj online
Poniższy kod wykonuje się od razu w Twojej przeglądarce — nic nie trzeba instalować. Zmień kod i kliknij „Uruchom”.
Zadania do pracy własnej
Napisz program, który pyta użytkownika o imię i wiek (przez
input()), a następnie wypisuje zdanie w stylu: "Cześć [imię]! Za 10 lat będziesz mieć [wiek+10] lat." Pamiętaj o zrzutowaniu wieku naint.Napisz program obliczający pole i obwód prostokąta na podstawie dwóch boków wpisanych przez użytkownika jako liczby zmiennoprzecinkowe (
float). Wynik wypisz z dokładnością do dwóch miejsc po przecinku (wskazówka: f-string obsługuje formatowanie:f"{wartosc:.2f}").Napisz program-kalkulator BMI: użytkownik podaje wagę (kg,
float) i wzrost (m,float), program oblicza BMI (waga / wzrost**2) i wypisuje wynik ORAZ jedną z czterech kategorii (niedowaga/norma/nadwaga/otyłość) jako osobną zmienną typustr, ustaloną instrukcją warunkową (poznasz ją w kolejnej lekcji — na razie możesz założyć z góry jedną wartość testową).
Typowe błędy
Zapominanie, że input() zawsze zwraca str — próba input("Podaj liczbę: ") + 1 rzuci błąd TypeError, bo Python nie może dodać liczby do tekstu, nawet jeśli tekst "wygląda jak liczba".
Mylenie = (przypisanie) z porównaniem — pojedynczy znak = NADAJE wartość, a porównanie (poznasz w kolejnej lekcji) to podwójne ==.
Używanie wielkich liter w True/False niekonsekwentnie — Python rozróżnia wielkość liter, więc true czy false (małymi) to BŁĄD składniowy (Python potraktuje to jako nazwę nieistniejącej zmiennej), nie wartość logiczna.
Nawiązanie do egzaminu zawodowego
Zmienne i typy danych to absolutna podstawa, na której zbudowana jest CAŁA reszta tego kursu — zarówno kolejne lekcje w tym dziale (operatory, instrukcje warunkowe, pętle), jak i cały dział "Algorytmy i złożoność", gdzie każdy algorytm operuje właśnie na zmiennych tych typów. Na maturze (Arkusz II) poprawne posługiwanie się typami danych jest sprawdzane w praktycznie KAŻDYM zadaniu programistycznym.