1.8. Mały Lotek

Informacja

Przykład pokazuje użycie instrukcji wejścia i wyjścia, instrukcji iteracyjnej oraz warunkowej, a także generatora liczb pseudolosowych. Program wymaga umiejętności wyodrębniania bloków kodu za pomocą wcięć.

1.8.1. Zadanie

Napisz program maly_lotek.py, który losuje liczbę i daje użytkownikowi trzy szansy na jej odgadnięcie.

Dane:

  • liczba – losowa liczba całkowita z zakresu <1; 10>, którą należy odgadnąć,

  • typ – liczba całkowita pobierana z klawiatury,

Wynik – wypisane komunikaty:

  • „Zgadłeś!” – jeżeli użytkownik odgadł wylosowaną liczbę,

  • „Nie zgadłeś. Spróbuj jeszcze raz.” – jeżeli użytkownik nie zgadł, ale ma jeszcze szanse,

  • „Miałem na myśli liczbę: liczba” – jeżeli użytkownik nie odgadł wylosowanej liczby.

1.8.2. Losowanie liczby

Korzystanie z generatora liczb pseudolosowych umożliwia moduł random. Zawiera on m.in. funkcję randint(), która zwraca liczbę z obustronnie domkniętego zakresu <a; b>:

Plik maly_lotek.pyKod nr
1import random
2
3liczba = random.randint(1, 10)
4print('Wylosowana liczba:', liczba)
5

1.8.3. Pobieranie typów

Trafienie za pierwszym razem wylosowanej liczby jest bardzo trudne, dajemy graczowi 3 szanse. Uzupełniamy kod:

Plik maly_lotek.pyKod nr
6for i in range(3):
7    print('Próba ', i + 1)
8    typ = int(input('Jaką liczbę od 1 do 10 mam na myśli? '))
9

Pobieranie i sprawdzanie kolejnych liczb wymaga powtórzeń, czyli pętli (zob. pętla). Ponieważ wiemy, że użytkownik ma trzy szanse, stosujemy pętlę for i in range(3):. W każdym powtórzeniu wypisujemy numer próby i pobieramy z klawiatury liczbę całkowitą, którą zapisujemy w zmiennej: typ = int(input('Podaj liczbę od 1 do 10: ')).

Uwaga

Zakładamy na razie, że gracz wprowadza poprawne dane, czyli liczby całkowite!

1.8.4. Sprawdzanie typów

Do sprawdzenia, czy użytkownik odgadł wylosowaną liczbę, musimy skorzystać ze złożonej instrukcji warunkowej:

Plik maly_lotek.pyKod nr
10    if liczba == typ:
11        print('Zgadłeś!')
12        break
13    elif i == 2:
14        print('Wylosowano liczbę: ', liczba)
15    else:
16        print('Spróbuj jeszcze raz.')
17    print()

Jeżeli zmienne liczba `` i ``typ zawierają tę samą wartość, wypisujemy komunikat o sukcesie. W przeciwnym razie jeżeli pobrano trzeci typ (i == 2) i nie był on trafny, wypisujemy wylosowaną liczbę. W przeciwnym razie wypisujemy komunikat, żeby spróbować jeszcze raz.

1.8.5. Ćwiczenie

  1. Zgadywanie, gdy losowana liczba jest wypisywana, nie jest zabawne. Zakomentuj instrukcję wypisującą wylosowaną liczbę.

  2. Dopisz odpowiednie polecenie, które wypisze liczbę podaną przez gracza.

  3. W trybie interaktywnym interpretera Pythona sprawdź działanie funkcji randint():

    ~$ python3
    >>> list(range(30))
    >>> for i in range(0, 100, 2)
    ...   print i
    ...
    >>> exit()
    

    Funkcja range() może przyjmować opcjonalne parametry określające początek, koniec oraz krok generowanej listy wartości.


Licencja Creative Commons Materiały Python 101 udostępniane przez Centrum Edukacji Obywatelskiej na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowa.

Utworzony:

2026-05-30 o 19:12 w Sphinx 7.3.7

Autorzy:

Robert Bednarz