Rozdział 12 · Wiele fascynujących mini-projektów!
Projekt: zgadnij liczbę, wersja 3
Pełny cykl rozwoju na znanej grze: wymagania → algorytm → schemat blokowy → tor stanu → kod.
Zastosowanie
randomwhileif/elif/elseinput()/int()счётчикPoziom
★★ średni
Rezultat
Gra tekstowa
Co tworzymy
Ostateczna, dopracowana wersja gry zgadywającej z rozdziałów 9-10 – z podsumowaniem prób i Fajny efekt.
Загадано число от 1 до 100. Попробуйте угадать!
Ваша попытка: 50
Слишком много!
Ваша попытка: 25
Слишком мало!
Ваша попытка: 37
Поздравляем! Загадано было 37. Попыток: 3
Wymagania
| Wymaganie | Jak sprawdzić |
|---|---|
| komputer wybiera liczbę całkowitą między 1 a 100 | random.randint(1, 100) |
| gracz próbuje, aż zgadnie | while guess != secret |
| po każdej próbie – podpowiedź niewiele/dużo | if/elif/else |
| próby się liczą | attempts += 1 |
| gra kończy się poprawną odpowiedzią | cyklu kończy się wynik |
Algorytm: Pętla zewnętrzna
Algorytm: co dzieje się podczas jednej próby
Condition Track
| Próba | guess | secret | Rezultat |
|---|---|---|---|
| 1 | 50 | 37 | za dużo |
| 2 | 25 | 37 | za mało |
| 3 | 37 | 37 | zgadywał, cykl się kończy |
Ostateczny Kod
ugadaj_chislo_v3.py
import random
secret = random.randint(1, 100)
attempts = 0
guess = None
print(„Zgaduje się liczbę od 1 do 100. Spróbuj zgadnąć!”)
while guess != secret:
guess = int(input(„Twoja próba: ”))
attempts += 1
if guess < secret:
print(„Za mało!”)
elif guess > secret:
print(„Za dużo!”)
else:
print(f"Gratulacje! To było życzenie {secret}. Próby: {attempts}")
W praktyce liczba jest stała, a nie losowa
Strona pokazuje prawdziwe
random.randint(1, 100) — dokładnie tak powinna działać gra. W notatniku praktyki tajna liczba jest wcześniej ustalona, a wprowadzenie jest wstawiane automatycznie — w przeciwnym razie automatyczna weryfikacja wyniku byłaby niedeterministyczna.Debug Lab
Co się stanie, jeśli sznurek attempts = 0 przypadkowo przełożyłem
wewnątrz cyklu while? Sprawdź zgadywanka przed czytaniem
Następny.
attempts zawsze będzie 1
Dokładnie ten sam błąd, co w §12.2 Debug Lab: licznik, zerowany w obrębie pętli, nigdy nie kumuluje wartości — przy każdej iteracji jest tworzony od nowa.
Poziom 3: ograniczenie prób
Utrudnimy wymagania: gra kończy się porażką po 10 nieudanych próbach.
ugadaj_chislo_limit.py
max_attempts = 10
while guess != secret and attempts < max_attempts:
...
if guess == secret:
print(f"Zwycięstwo dla {attempts} prób!")
else:
print(f"Liczby się skończyły. Życzenie zostało złożone {secret}.")
Praktyka: Zgadnij liczbę, wersja 3
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Praktyka (★★★): ograniczenie liczby prób
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji