Czym jest projekt
Jak dotąd studiowaliśmy narzędzia indywidualnie. Teraz uczymy się, jak je połączyć w prawdziwy program, zaczynając od podejścia do wielkiego zadania w ogóle.
Od narzędzi do programów
Rozdziały 1-11 nauczył cię indywidualnie narzędzi: łańcuch znakówm, Liczby, Warunki, Pętle, Turtle, listy i słowniki. Ten rozdział nie dodaje żadnych nowych narzędzi — uczy łączyć je razem, aby powstał prawdziwy, działający program.
Jaka jest różnica między projektem a ćwiczeniem
| Praktyka | Projekt | |
|---|---|---|
| Przykład | Obliczaj 7 % 3 | Zbuduj konwerter sekund na godziny/minuty/sekundy z walidacją danych wejściowych |
| Wkład | zazwyczaj nie | są, i trzeba je przemyślać z wyprzedzeniem |
| Kroki | jeden | kilka ze sobą powiązanych |
| Rezultat | jedna wartość | sformalizowanym wnioskiem, reakcją na różne przypadki |
| Robaki | prawie niemożliwe | trzeba przemyśleć, co może pójść nie tak |
Dekompozycja: Rozkład dużego zadania na małe części
Zadanie „Zbuduj grę w zgadywanie” jest zbyt duże, aby rozwiązać je jednym kawałkiem kodu. Rozbijmy je na zrozumiałe kroki:
Szablon projektu, którego użyjemy
Każdy duży projekt w tym rozdziale podąża tym samym schematem — niekoniecznie tymi z tymi samymi nagłówkami, ale w tym samym porządku myślenia:
Wymagania i „co oznacza 'zrobione'”
Przed napisaniem kodu warto jasno określić wymagania, jakie musi spełnić program by być uznanym za gotowego. Przykład przyszłej gry w zgadywanie:
| Wymaganie | Weryfikacja |
|---|---|
| komputer wybiera liczbę całkowitą między 1 a 100 | sekret — int w zakresie [1, 100] |
| gracz wpisuje liczby prób | input() + int() |
| program mówi "trochę" / "dużo" | if/elif/else |
| program kończy się poprawną odpowiedzią | pętla zatrzymuje się przy guess == secret |
| próby się liczą | counter wzrasta przy każdej próbie |
Rozgrzewka: statystyki trzech liczb
Zanim przejdziemy do dużych projektów, przećwiczmy sam proces — od zadania po kod — w programie wieloliniowym.
Zadanie: otrzymać trzy liczby i uzyskać minimalną, maksymalną ilość i drugorzędne.
a = float(input(„Pierwszy numer: ”))
b = float(input(„Drugi numer: ”))
c = float(input(„Trzeci numer: ”))
chisla = [a, b, c]
print(f"Minimum: {min(chisla)}")
print(f"Maksimum: {max(chisla)}")
print(f"Suma: {sum(chisla)}")
print(f"Średniozaawansowany: {sum(chisla) / len(chisla):.2f}")
min/max/sum/len — Rozdział 11) oraz sformatowany wynik (f-lines — Rozdział 8). Później w rozdziale — to samo, ale większe.