← Strona główna

01 — Podstawy Pythona

Zmienne, typy danych, operatory, instrukcje warunkowe — fundament wszystkiego.

Start i podstawy

1. Zmienne

Zmienna to nazwane miejsce w pamięci, w którym przechowujesz wartość. W Pythonie nie deklarujesz typu — Python sam go rozpoznaje w momencie przypisania.

  • Przypisanie wartości: operator =
  • Nazwa zmiennej: litery, cyfry, podkreślenie; nie może zaczynać się od cyfry
  • Wielkość liter ma znaczenie: wiekWiek
  • Konwencja: nazwy piszemy z małej litery, słowa oddzielamy podkreśleniem (snake_case)
Zasada Jedna zmienna — jedna wartość w danym momencie. Przypisanie nowej wartości nadpisuje poprzednią.
Przykład — zmienne
imie = "Kasia"
wiek = 17
wzrost = 1.68
zdana = False

# Wielokrotne przypisanie
x = y = z = 0

# Zamiana wartości (bez zmiennej tymczasowej)
a = 10
b = 20
a, b = b, a
print(a, b)   # 20 10

2. Typy danych

Python ma kilka podstawowych typów danych. Typ zmiennej możesz sprawdzić funkcją type().

TypPrzykładOpis
int42Liczba całkowita
float3.14Liczba zmiennoprzecinkowa
str"Ala"Ciąg znaków (tekst)
boolTrue / FalseWartość logiczna
NoneTypeNoneBrak wartości
Konwersja typów int("5") → 5  ·  float("3.14") → 3.14  ·  str(42) → "42"  ·  bool(0) → False
Przykład — typy i konwersja
x = 10
y = 3.5
tekst = "Python"
flaga = True

print(type(x))      # <class 'int'>
print(type(y))      # <class 'float'>
print(type(tekst))  # <class 'str'>
print(type(flaga))  # <class 'bool'>

# Konwersja — wczytanie liczby od użytkownika
wiek = int(input("Podaj wiek: "))
cena = float(input("Podaj cenę: "))

# Sprawdzenie po konwersji
print(type(wiek))   # <class 'int'>

3. Operatory

Arytmetyczne
Op.DziałanieWynik
+dodawanie7+3 = 10
-odejmowanie7-3 = 4
*mnożenie7*3 = 21
/dzielenie7/2 = 3.5
//dzielenie całk.7//2 = 3
%reszta z dz.7%2 = 1
**potęgowanie2**8 = 256
Porównania
Op.Znaczenie
==równe
!=różne
>większe
<mniejsze
>=większe lub równe
<=mniejsze lub równe
Logiczne
Op.Znaczenie
andoba warunki prawdziwe
orprzynajmniej jeden
notnegacja
Przypisania skrócone
x += 5x = x + 5
x -= 5x = x - 5
x *= 2x = x * 2
x //= 2x = x // 2

4. Łańcuchy znaków (str)

Tekst w Pythonie to obiekt typu str. Możesz go tworzyć w apostrofach lub cudzysłowach.

  • Konkatenacja: łączenie tekstów operatorem +
  • Powtarzanie: "ha" * 3"hahaha"
  • f-string: wstawianie zmiennych do tekstu — f"Mam {wiek} lat"
  • Indeksowanie: tekst[0] — pierwszy znak
  • Długość: len(tekst)
  • Wycinki (slice): tekst[1:4]
Uwaga Indeksowanie zaczyna się od 0. Ostatni znak to indeks len(tekst) - 1, lub krócej: tekst[-1].
Przykład — operacje na tekście
imie = "Kasia"
nazwisko = "Nowak"

# Konkatenacja
pelne = imie + " " + nazwisko
print(pelne)          # Kasia Nowak

# f-string
wiek = 17
info = f"Mam {wiek} lat i {wiek * 365} dni."
print(info)

# Indeksowanie i slice
print(imie[0])        # K
print(imie[-1])       # a
print(imie[1:3])      # as
print(imie[::-1])     # aisaK  (odwrócenie)

# Metody
print(imie.upper())   # KASIA
print(imie.lower())   # kasia
print(pelne.split()) # ['Kasia', 'Nowak']
print("  spacje  ".strip())  # 'spacje'

5. Instrukcje warunkowe — if / elif / else

Instrukcja warunkowa pozwala wykonać różny kod w zależności od tego, czy warunek jest prawdziwy (True) czy fałszywy (False).

  • if — sprawdza pierwszy warunek
  • elif — kolejny warunek (można dodać wiele)
  • else — wykonuje się, gdy żaden warunek nie był spełniony
  • Wcięcie (4 spacje lub Tab) jest obowiązkowe — definiuje blok kodu
Wartości fałszywe (Falsy) 0, 0.0, "", [], None, False — wszystkie są traktowane jako fałsz w warunku.
Skrócony if (ternary) wynik = "TAK" if warunek else "NIE"
Przykład — instrukcje warunkowe
ocena = int(input("Podaj ocenę (1-6): "))

if ocena == 6:
    print("Celujący — świetnie!")
elif ocena == 5:
    print("Bardzo dobry!")
elif ocena >= 3:
    print("Zaliczone.")
elif ocena == 2:
    print("Niedostatecznie.")
else:
    print("Nieprawidłowa ocena.")

# Zagnieżdżone warunki
wiek = int(input("Wiek: "))
if wiek >= 18:
    prawo_jazdy = input("Masz prawo jazdy? (t/n): ")
    if prawo_jazdy == "t":
        print("Możesz prowadzić.")
    else:
        print("Musisz zdać egzamin.")
else:
    print("Za młody/a na prawo jazdy.")

6. Wejście i wyjście — input() i print()

input() zawsze zwraca tekst (str) — jeśli potrzebujesz liczby, musisz dokonać konwersji.

print() wypisuje wartości na ekran. Możesz sterować separatorem i końcem linii.

  • print(a, b, sep=", ") — separator między wartościami
  • print("tekst", end="") — bez nowej linii na końcu
  • print(f"{zmienna:.2f}") — formatowanie liczb (2 miejsca po przecinku)
Przykład — input i print
# Wczytanie i konwersja
imie  = input("Podaj imię: ")
wiek  = int(input("Podaj wiek: "))
wzrost = float(input("Podaj wzrost (m): "))

# Różne sposoby wypisywania
print("Cześć,", imie)
print(f"Masz {wiek} lat i {wzrost} m wzrostu.")
print("Wzrost: {:.0f} cm".format(wzrost * 100))

# Kilka wartości w jednej linii
print(imie, wiek, wzrost, sep=" | ")
# Kasia | 17 | 1.68

# Bez nowej linii
print("Ładowanie", end="")
print("...", end="\n")

Zadania przykładowe z omówieniem

Zadanie 1 Kalkulator BMI łatwe

Wczytaj od użytkownika wagę (kg) i wzrost (m). Oblicz BMI według wzoru: BMI = waga / wzrost². Wypisz wynik z dwoma miejscami po przecinku i kategorię (niedowaga <18.5, norma 18.5–24.9, nadwaga ≥25).

Rozwiązanie
waga   = float(input("Podaj wagę (kg): "))
wzrost = float(input("Podaj wzrost (m): "))

bmi = waga / wzrost ** 2

print(f"Twoje BMI: {bmi:.2f}")

if bmi < 18.5:
    print("Kategoria: niedowaga")
elif bmi < 25:
    print("Kategoria: norma")
elif bmi < 30:
    print("Kategoria: nadwaga")
else:
    print("Kategoria: otyłość")
Omówienie krok po kroku
  1. Wczytanie danych
    float(input(...))input() zwraca tekst, float() zamienia go na liczbę z przecinkiem. Wzrost musi być w metrach (np. 1.68), nie centymetrach.
  2. Obliczenie BMI
    wzrost ** 2 to wzrost do potęgi 2. Python liczy potęgowanie przed dzieleniem — kolejność działań jest zachowana.
  3. Formatowanie wyniku
    {bmi:.2f} w f-stringu oznacza: wyświetl zmienną bmi jako liczbę zmiennoprzecinkową z dokładnie 2 miejscami po przecinku.
  4. Warunki elif
    Sprawdzamy od najniższej wartości w górę. Gdy warunek bmi < 18.5 jest fałszywy, wiemy że BMI ≥ 18.5 — kolejny elif bmi < 25 oznacza więc zakres 18.5–24.9.
Zadanie 2 Parzysta czy nieparzysta, dodatnia czy ujemna łatwe

Wczytaj liczbę całkowitą. Wypisz, czy jest parzysta czy nieparzysta, a następnie czy jest dodatnia, ujemna czy równa zero.

Rozwiązanie
liczba = int(input("Podaj liczbę całkowitą: "))

# Parzystość
if liczba % 2 == 0:
    print("Liczba jest parzysta.")
else:
    print("Liczba jest nieparzysta.")

# Znak liczby
if liczba > 0:
    print("Liczba jest dodatnia.")
elif liczba < 0:
    print("Liczba jest ujemna.")
else:
    print("Liczba jest równa zero.")
Omówienie krok po kroku
  1. Operator modulo %
    liczba % 2 zwraca resztę z dzielenia przez 2. Jeśli reszta to 0 — liczba jest parzysta. To klasyczny test parzystości — zapamiętaj go na egzamin.
  2. Dwa niezależne bloki if
    Celowo użyto dwóch osobnych bloków if (nie elif), bo to są dwa niezależne pytania — jedno o parzystość, drugie o znak. Gdybyś użyła elif, drugi warunek nie byłby sprawdzany po spełnieniu pierwszego.
  3. Zero — osobny przypadek
    Zero jest parzyste (0 % 2 == 0) i nie jest ani dodatnie, ani ujemne. Dlatego else dla znaku obsługuje dokładnie ten jeden przypadek.
Zadanie 3 Kalkulator napiwku średnie

Wczytaj kwotę rachunku i liczbę osób przy stole. Oblicz napiwek 15% i podziel go równo między osoby. Wypisz: łączny napiwek i napiwek na osobę — oba z dokładnością do 2 miejsc po przecinku. Jeśli liczba osób wynosi 0 lub mniej, wypisz komunikat o błędzie.

Rozwiązanie
rachunek = float(input("Kwota rachunku (zł): "))
osoby    = int(input("Liczba osób: "))

if osoby <= 0:
    print("Błąd: liczba osób musi być większa od 0.")
else:
    napiwek        = rachunek * 0.15
    napiwek_osoba  = napiwek / osoby

    print(f"Łączny napiwek:    {napiwek:.2f} zł")
    print(f"Napiwek na osobę:  {napiwek_osoba:.2f} zł")
Omówienie krok po kroku
  1. Walidacja danych wejściowych
    Zanim cokolwiek obliczysz, sprawdź czy dane mają sens. Dzielenie przez 0 spowoduje błąd (ZeroDivisionError) — warunek osoby <= 0 go zapobiega.
  2. Obliczenie 15%
    rachunek * 0.15 — procent zapisujemy jako ułamek dziesiętny. 15% = 15/100 = 0.15. Mnożenie jest prostsze i szybsze niż rachunek / 100 * 15.
  3. Podział napiwku
    Dzielimy przez osoby operatorem / (nie //!) — chcemy wynik z przecinkiem, nie zaokrąglony w dół.
  4. Wyrównanie wydruku
    Spacje przed {napiwek_osoba:.2f} to tylko kosmetyka — wyrównują wynik do jednej kolumny. Na egzaminie nie jest wymagane, ale wygląda profesjonalnie.
Zadanie 4 Zamiana jednostek temperatury średnie

Wczytaj temperaturę i jednostkę (C lub F). Jeśli podano Celsjusze, zamień na Fahrenheity i odwrotnie. Wzory: F = C × 9/5 + 32 oraz C = (F − 32) × 5/9. Jeśli jednostka jest inna niż C lub F — wypisz błąd.

Rozwiązanie
temp    = float(input("Podaj temperaturę: "))
jednostka = input("Jednostka (C/F): ").strip().upper()

if jednostka == "C":
    wynik = temp * 9 / 5 + 32
    print(f"{temp}°C = {wynik:.1f}°F")
elif jednostka == "F":
    wynik = (temp - 32) * 5 / 9
    print(f"{temp}°F = {wynik:.1f}°C")
else:
    print(f"Błąd: nieznana jednostka '{jednostka}'.")
    print("Podaj C (Celsjusze) lub F (Fahrenheity).")
Omówienie krok po kroku
  1. .strip().upper()
    strip() usuwa białe znaki z początku i końca (np. spację przypadkowo wpisaną przez użytkownika). upper() zamienia na wielkie litery — dzięki temu "c", "C", " c " — wszystkie zostaną poprawnie rozpoznane.
  2. Kolejność działań w wyrażeniu
    temp * 9 / 5 + 32 — Python liczy od lewej: najpierw temp * 9, potem / 5, na końcu + 32. Wynik jest poprawny. Możesz też napisać temp * (9/5) + 32 dla czytelności.
  3. Formatowanie :.1f
    Jedno miejsce po przecinku — temperatura z większą precyzją jest zazwyczaj zbędna w kontekście pogody czy gotowania.
  4. Obsługa błędnego wejścia
    Blok else informuje użytkownika co poszło nie tak i co powinien wpisać. Dobry komunikat błędu to część dobrego programu.

Zadania do samodzielnego rozwiązania

Rozwiąż poniższe zadania samodzielnie — teoria i przykłady wyżej dają Ci wszystko, czego potrzebujesz.

1 ★☆☆

Sekunda na czas

Wczytaj liczbę sekund (całkowitą). Wypisz ile to godzin, minut i sekund. Np. dla 3723 sekund: 1 godz. 2 min. 3 sek.

Wskazówka: // i %
2 ★☆☆

Pole i obwód prostokąta

Wczytaj długość i szerokość prostokąta. Oblicz i wypisz pole oraz obwód. Sprawdź czy podane wartości są dodatnie.

Wskazówka: walidacja z if
3 ★★☆

Rok przestępny

Wczytaj rok. Wypisz, czy jest przestępny. Rok jest przestępny gdy: podzielny przez 4, ale nie przez 100 — lub podzielny przez 400.

Wskazówka: and, or, %
4 ★★☆

Kalkulator ocen

Wczytaj trzy oceny (liczby zmiennoprzecinkowe). Oblicz średnią. Wypisz średnię i słowną ocenę końcową (według skali szkolnej 1–6).

Wskazówka: elif ze skalą procentową
5 ★★☆

Odwrócony napis

Wczytaj słowo. Wypisz je odwrócone, sprawdź czy jest palindromem (czyta się tak samo od przodu i od tyłu) i wypisz liczbę liter.

Wskazówka: slice [::-1], len(), .lower()
6 ★★★

Kalkulator podatkowy

Wczytaj roczny dochód brutto. Oblicz podatek według progów: do 120 000 zł — 12%, powyżej — 32% od nadwyżki. Wypisz kwotę podatku i dochód netto.

Wskazówka: dwa progi, if/else, formatowanie z :.2f