Python • kurs podstawowy • lekcja 15
Miniprojekt: zgadywanie liczby
Połączysz wejście, stan, decyzje i pętlę.
Twój cel: Zbudujesz i przetestujesz grę z podpowiedziami i limitem prób.Wejście, warunki, pętle i break.
Od potrzeby do kodu
Użyj stałej tajnej liczby 7: dzięki temu wynik testu będzie przewidywalny. Losowanie dodasz dopiero po poznaniu modułów. W tej wersji gracz wpisuje liczby całkowite od 1 do 10; obsługa tekstu zamiast liczby pojawi się w lekcji 30.
Zbuduj grę etapami. Najpierw pobierz jedną próbę i porównaj z 7. Potem rozdziel odpowiedź „źle” na Za mało i Za dużo. Na końcu umieść pobranie w pętli i dodaj licznik. attempts zaczyna od 0, a każda pobrana liczba zwiększa go dokładnie raz.
Wersja poniżej dopuszcza trzy próby. Najpierw sprawdzamy trafienie, potem podpowiedź. Po pętli odróżniamy wygraną od wykorzystanego limitu. guess = None pozwala nazwać stan przed pierwszą odpowiedzią. Trafienie w ostatniej próbie nadal musi oznaczać zwycięstwo.
Przewidź przed uruchomieniem
W tym przebiegu wpisz kolejno: 2, 9, 7.
secret = 7
attempts = 0
guess = None
while attempts < 3:
guess = int(input("Liczba 1–10: "))
attempts = attempts + 1
if guess == secret:
print(f"Brawo! Próby: {attempts}")
break
elif guess < secret:
print("Za mało")
else:
print("Za dużo")
if guess != secret:
print(f"Limit prób. Liczba: {secret}")
Porównaj wynik i prześledź mechanizm
Za mało, Za dużo, Brawo! Próby: 3. Limit prób nie pojawi się, bo ostatnie guess jest równe secret. Sukces sprawdzamy także w ostatniej dopuszczalnej próbie.
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
Liczba 1–10: Za mało
Liczba 1–10: Za dużo
Liczba 1–10: Brawo! Próby: 3
| Próba | guess | Relacja do 7 | Działanie |
|---|---|---|---|
| 1 | 2 | Mniejsze | Kontynuuj |
| 2 | 9 | Większe | Kontynuuj |
| 3 | 7 | Równe | Wygrana i break |
Zmień działający program
Przed grą wprowadź zmienną limit = 5 i użyj jej w warunku. Po błędnej próbie wypisz liczbę pozostałych prób.
Pierwsza wskazówka
Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.
Porównaj swoją modyfikację
secret = 7
limit = 5
attempts = 0
guess = None
while attempts < limit:
guess = int(input("Liczba: "))
attempts = attempts + 1
if guess == secret:
print("Brawo")
break
elif guess < secret:
print("Za mało")
else:
print("Za dużo")
print(f"Pozostało: {limit - attempts}")
if guess != secret:
print(f"Limit prób. Liczba: {secret}")
Wejście testowe: 7.
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
Liczba: Brawo
Znajdź przyczynę problemu
Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.
Zamierzone działanie: Dopuść sukces także w ostatniej próbie.
Program sprawdza attempts == 3 i ogłasza porażkę przed sprawdzeniem, czy trzecia odpowiedź jest trafna.
Trop do diagnozy
Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.
Zastosuj w nowej sytuacji
Wskazówka do rozpoczęcia
Buduj grę małymi etapami. Testuj sukces, porażkę i sukces dokładnie na granicy limitu.
Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:
answer = None
Rozwiązanie do samodzielnej kontroli
answer = None
for attempt in range(2):
answer = int(input("Ile to 3 * 4? "))
if answer == 12:
print("Dobrze")
break
if answer != 12:
print("Wynik: 12")
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
Ile to 3 * 4? Ile to 3 * 4? Dobrze
Wejście testowe: 10, 12.
Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.
Co zabierasz do kolejnego programu?
Buduj grę małymi etapami. Testuj sukces, porażkę i sukces dokładnie na granicy limitu.
Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.