Rozdział 9 · Słuchaj mojego rozkazu!

Mini-projekt – Gra Zgadnij Liczbę

Pierwsza prawdziwa gra w książce polega na tym, że komputer zgaduje liczbę, a ty próbujesz zgadnąć.

Pierwsza prawdziwa gra w tej książce! Komputer zgaduje liczbę, ty wpisujesz jedną Alternatywnie, program pokazuje, czy dobrze zgadłeś, czy nie.

Najpierw — jak to wygląda dla gracza

terminal_dialog.txt
Я загадал число от 1 до 10.

Ваш вариант: 7
Слишком большое!
Я загадал: 4

Albo, jeśli zgadliście za pierwszym razem:

terminal_dialog_win.txt
Я загадал число от 1 до 10.

Ваш вариант: 4

🎉 Вы угадали!
Jedna próba — i to w porządku
Jeszcze nie przeszliśmy przez pętle (Rozdział 10), więc gracz ma dokładnie jedną próbę. Pojawi się tam pełna, powtarzalna wersja z powtórką do czasu zgadywania, więc miejcie to na uwadze jako motywację do kolejnego rozdziału.

Drzewo Decyzyjne w grze

STARTguessguess ==secret?TAKZgadliście!NIEguess < secret?TAK„Zbyt mało”NIE„Za dużo”KONIEC
Decyzyjne drzewo gry — tłumaczymy bezpośrednio do if / elif / else
reshenie_v_kod.py
if guess == secret:
    print(„🎉 Zgadłeś dobrze!”)
elif guess < secret:
    print(„Za mało!”)
else:
    print(„Za dużo!”)

Budowanie gry krok po kroku

Krok 1 – Zrób liczbę

shag_1.py
import random

secret = random.randint(1, 10)

Krok 2 – Przeczytaj odpowiedź gracza

shag_2.py
guess_text = input(„Twoja opcja: ”)

Krok 3 – Przelicz na liczbę

shag_3.py
guess = int(guess_text)
Zapomniane int() są źródłem błędów
Jeśli porównać guess_text < secret bezpośrednio (łańcuch znaków z liczbą), Python da TypeError - Nie można porównywać łańcuch znaków i liczby. Konwersja int() koniecznie.

Krok 4 – Sprawdź dokładne dopasowanie

shag_4.py
if guess == secret:
    print(„🎉 Zgadłeś dobrze!”)

Krok 5 – Dodaj „za mało”

shag_5.py
if guess == secret:
    print(„🎉 Zgadłeś dobrze!”)
elif guess < secret:
    print(„Za mało!”)

Krok 6 — else oznacza „za dużo”

shag_6.py
if guess == secret:
    print(„🎉 Zgadłeś dobrze!”)
elif guess < secret:
    print(„Za mało!”)
else:
    print(„Za dużo!”)

Krok 7 - Wersja ostateczna

ugadaj_chislo.py
import random

secret = random.randint(1, 10)
guess = int(input(„Twoja opcja: ”))

if guess == secret:
    print(„🎉 Zgadłeś dobrze!”)
elif guess < secret:
    print(„Za mało!”)
else:
    print(„Za dużo!”)

print(f"Wylosowana liczba była: {secret}")
Stała liczba dla przykładowych kursów
W przykładach dokumentacji czasami używa się stałej liczby zamiast random.randint(...)tak, by efekt był przewidywalny po pokazaniu. W prawdziwej grze nie jest to konieczne — to losowość czyni grę interesującą.

Debug-laboratorium: pięć błędów

Błąd 1 — zapomniano int()

bug_1.py
guess = input("Ваш вариант: ")
if guess < secret:
    ...
# TypeError: '<' not supported between instances of 'str' and 'int'

Poprawka: guess = int(input(...)).

Błąd 2 – Nieprawidłowa kolejność gałęzi

bug_2.py
if guess < secret:
    ...
elif guess == secret:
    ...

Sam się nie zepsuje, ale kolejność „najpierw niedokładna, potem dokładna”

Błąd 3 — = zamiast ==

bug_3.py
if guess = secret:
    ...
# SyntaxError: invalid syntax

Single = w tym warunku jest błąd składniowy, Python nawet nie uruchomi programu (Rozdział 9.5). Metoda

Błąd 4 - Zła granica

bug_4.py
secret = random.randint(1, 10)
# но подсказка написана как "от 1 до 9" — граница не совпадает с кодом

Błąd 5 – Dwa niezależne if zamiast elif

bug_5.py
if guess < secret:
    print("Слишком мало!")
if guess > secret:
    print("Слишком много!")
# при guess == secret НИ ОДНО сообщение не покажется — а if/elif/else это учитывает
★★ Zadanie samodzielne
Podpowiedź „gorąco/zimno"

Dodaj czwarte warunek: jeśli różnica między guess a secret jest mniejsza niż 3 (użyj abs()) — wyświetl „Bardzo blisko!” przed głównym komunikatem.

Praktyka: Zgadywanie całej gry w zgadywanie liczb
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →