Miniprojekt: zgadywanie liczby

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Miniprojekt: zgadywanie liczby
Required In Progress

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
Buduj grę małymi etapami. Testuj sukces, porażkę i sukces dokładnie na granicy limitu.
Buduj grę małymi etapami. Testuj sukces, porażkę i sukces dokładnie na granicy limitu.

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
Model do prześledzenia: porównaj każdy etap z kodem. Etykiety opisują znaczenie danych, nie tylko ich wygląd.

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.