Rozdział 5 · Pobawmy się liczbami!

Mini-projekty i podsumowania

Zebranie całego rozdziału w pięć małych, ale realnych projektów i podsumowanie wyników.

Pięć małych, ale realnych projektów – każdy wykorzystujący tylko to, co już omówiliśmy tym rozdziale.

Projekt 1: inteligentny kalkulator

Liczymy wynik w zależności od wybranego operatora — +, -, * lub /:

wyprzedzanie faktów
Użyty tutaj projekt if / elif — omówimy to szczegółowo w rozdziale 8. Na razie wystarczy czytać to jak zwykły tekst: „jeśli operator taki-to — zrób tak, a jeśli inny — inaczej”.
umnyj_kalkulyator.py
a, b = 12, 4
operator = "+"

if operator == "+":
    rezultat = a + b
elif operator == "-":
    rezultat = a - b
elif operator == "*":
    rezultat = a * b
elif operator == "/":
    rezultat = a / b

print(rezultat)   # 16
Podstawowa praktyka
Dodaj //, % i **

Rozszerzyć kalkulator tak, aby mógł także wykonywać dzielenie liczb całkowitoliczbowych, reszty i potęgowanie.

Projekt 2: Konwerter Czasu – Krótsza wersja

Problem rozwiązaliśmy już w rozdziale 4 — przez // oraz % osobno. Teraz, kiedy wiemy divmod() (sekcja „Dzielenie z resztą”

konverter_vremeni_divmod.py
total_seconds = 3725

hours, ostatok = divmod(total_seconds, 3600)
minutes, seconds = divmod(ostatok, 60)

print(f"{hours}godziny {minutes}m {seconds}z")   # 1h 2m 5s
★★ Zadanie samodzielne
Challenge

Sprawdź swój konwerter na 0 sekund i na 90000 sekund (więcej niż dobę).

Projekt 3: Laboratorium Kostek

Rzuć dwoma kostkami i policz sumę oraz średnią – użyj random.randint() już znanych operatorów:

laboratoriya_kubika.py
import random

kub1 = random.randint(1, 6)
kub2 = random.randint(1, 6)
summa = kub1 + kub2
srednee = summa / 2

print(f"Kostka 1: {kub1}, sześcian 2: {kub2}")
print(f"Suma: {summa}, średnia: {srednee}")
★★ Zadanie samodzielne
Podwójnie!

Dodaj sprawdzenie: jeśli obie kości są takie same, wypisz „Double!”

Projekt 4: losowe wyzwanie — wielokrotności liczb

Program, który znajduje wszystkie wielokrotności losowo wybranego jednego – użyj random oraz % razem:

kratnye_chisla.py
import random

# liczba losowa, której liczności szukamy
kratnoe_chemu = random.randint(2, 9)
print(f"Szukamy liczb podzielnych przez {kratnoe_chemu}, od 1 do 50")

chislo = 1
while chislo <= 50:
    if chislo % kratnoe_chemu == 0:
        print(chislo)
    chislo += 1
Pospieszmy się jeszcze raz
Cykl while omówimy szczegółowo w rozdziale 10. Tutaj ważne jest, aby zobaczyć, jak % z tego rozdziału znajduje wszystkie wielokrotności danej liczby: reszta dzielenia jest równa zero dokładnie wtedy, gdy liczba jest podzielna jako liczba całkowita.
Challenge
Własny zasięg

Zmień granice wyszukiwania z 1–50 na 1–100.

Projekt 5: laboratorium geometryczne

Zebranie kilku wzorów w tym rozdziale jednocześnie: odległość między dwoma punktami oraz pole okręgu o następującym promieniu:

geometricheskaya_laboratoriya.py
import math

tochka_a = (0, 0)
tochka_b = (3, 4)

radius = math.dist(tochka_a, tochka_b)
ploshad_kruga = math.pi * radius ** 2

print(f"Odległość między punktami: {radius}")
print(f"Pole okręgu o takim promieniu: {round(ploshad_kruga, 2)}")
Challenge
Obwód trójkąta

Dodaj trzeci punkt i oblicz obwód trójkąta utworzonego przez wszystkie trzy punkty, używając math.dist() trzech razy.

Praktyka: Mini-projekty w rozdziale 5
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →

Ostateczna mapa rozdziału

Jakiego narzędzia do rozdziału 5 potrzebuję?
Potrzebujesz sprawdzenia salda lub mnożności?
// i %
Potrzebujesz dyplomu czy root?
** lub math.sqrt()
Formuła nie mieści się w jednej zrozumiałej linii?
nazwane kroki pośrednie
Czy potrzebujesz geometrii — odległości, powierzchni, kąta?
math.hypot() / math.dist() / math.pi
Potrzebujesz losowości do gry?
random
Musisz powtórzyć ten sam losowy wynik?
random.seed()
Wracaj do tej mapy w przyszłych projektach — zbiera ona cały rozdział w sześć pytań

Podsumowanie rozdziału

Co możemy teraz zrobić

  • Wyrażenie — operandy plus operator; odróżniamy wyrażenie od instrukcji (statement).
  • Główne operatory + - * / i ich modele geometryczne: prosta liczbowa dla +/-, prostokąt dla mnożenia.
  • //, % oraz divmod() — w tym jak działają z liczbami ujemnymi (zaokrąglanie do minus nieskończoności).
  • **, pow() oraz math.pow() to klasyczna pułapka -2 ** 2.
  • Skrócone operatory przypisania, pełna mapa priorytetów oraz asocjowalność (w tym prawicowa asocjatiwność **).
  • Tłumaczenie wzorów z notacji matematycznej na Python — i typowe błędy tłumaczeniowe.
  • Głęboki moduł math: pierwiastki i odległości, gcd/lcm/factorial/comb/perm, geometria, trygonometria, logarytmy.
  • Głęboki moduł random: pseudo-losowość, randint/randrange/uniform, choice/choices/sample/shuffle, seed i random vs secrets.
  • Obliczania debugowania: trzy typy błędów oraz technika śledzenia formuły przez nazwane kroki.

co dalej

W rozdziale 6 weźmiemy liczby, które teraz umiemy liczyć, i zaczniemy je rysować — zapoznajmy się z modułem turtle narysować pierwsze kształty na ekranie. Współrzędne, kąty i odległości z tego rozdziału od razu się przydadzą.