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 /:
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”.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
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ą”
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
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:
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}")
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:
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
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.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:
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)}")
Dodaj trzeci punkt i oblicz obwód trójkąta utworzonego przez wszystkie trzy punkty, używając math.dist() trzech razy.
Ostateczna mapa rozdziału
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. //,%orazdivmod()— w tym jak działają z liczbami ujemnymi (zaokrąglanie do minus nieskończoności).**,pow()orazmath.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ą.