1.1. Mały Lotek
W Toto Lotku trzeba zgadywać liczby. Napiszmy prosty program, w którym będziemy mieli podobne zadanie. Użyjemy języka Python.
1.1.1. Szablon
Zaczynamy od utworzenia pliku o nazwie toto.py
w dowolnym katalogu
za pomocą dowolnego edytora. Zapis ~$
poniżej oznacza katalog domowy użytkownika.
Obowiązkowa zawartość pliku:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
Pierwsza linia to ścieżka do interpretera Pythona (zob. interpreter), druga linia deklaruje sposób kodowania znaków, dzięki czemu możemy używać polskich znaków.
1.1.2. Wartości i zmienne
Zaczniemy od wylosowania jednej liczby. Potrzebujemy funkcji
randint(a, b)
z modułu random
. Zwróci nam ona liczbę całkowitą
z zakresu <a; b>. Do naszego pliku dopisujemy:
4import random
5
6liczba = random.randint(1, 10)
7print("Wylosowana liczba:", liczba)
Wylosowana liczba zostanie zapamiętana w zmiennej liczba
(zob. zmienna ).
Funkcja print()
wydrukuje ją razem z komunikatem na ekranie.
Program możemy już uruchomić w terminalu (zob. terminal),
wydając w katalogu z plikiem polecenie:
~$ python3 toto.py
Efekt działania naszego skryptu:

Wskazówka
Skrypty Pythona możemy też uruchamiać z poziomu edytora, o ile oferuje on taką możliwość.
1.1.3. Wejście – wyjście
Liczbę mamy, niech gracz, czyli użytkownik ją zgadnie. Pytanie tylko, na ile prób mu pozwolimy. Zacznijmy od jednej! Dopisujemy zatem:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4import random
5
6liczba = random.randint(1, 10)
7print("Wylosowana liczba:", liczba)
8
9odp = input("Jaką liczbę od 1 do 10 mam na myśli? ")
Liczbę podaną przez użytkownika pobieramy za pomocą funkcji input()
i zapamiętujemy w zmiennej odp
.
Uwaga
Zakładamy na razie, że gracz wprowadza poprawne dane, czyli liczby całkowite!
1.1.3.1. Ćwiczenie 1
Zgadywanie, gdy losowana liczba jest drukowana, nie jest zabawne. Zakomentuj więc instrukcję drukowania:
# print("Wylosowana liczba:", liczba
) – będzie pomijana przez interpreter.Dopisz odpowiednie polecenie, które wyświetli liczbę podaną przez gracza. Przetestuj jego działanie.

1.1.4. Instrukcja warunkowa
Mamy wylosowaną liczbę i typ gracza, musimy sprawdzić, czy trafił. Uzupełniamy nasz program:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4import random
5
6liczba = random.randint(1, 10)
7# print("Wylosowana liczba:", liczba)
8
9odp = input("Jaką liczbę od 1 do 10 mam na myśli? ")
10# print("Podałeś liczbę: ", odp)
11
12if liczba == int(odp):
13 print("Zgadłeś! Dostajesz długopis!")
14else:
15 print("Nie zgadłeś. Spróbuj jeszcze raz.")
Używamy instrukcji warunkowej if
, która sprawdza prawdziwość warunku
liczba == int(odp)
(zob. instrukcja warunkowa).
Jeżeli wylosowana i podana liczba są sobie równe (==
),
wyświetlamy informację o wygranej, w przeciwnym razie (else:
) zachętę
do ponownej próby.
Informacja
Instrukcja input()
wszystkie pobrane dane zwraca jako napisy (typ string).
Do przekształcenia napisu na liczbę całkowitą (typ integer) wykorzystujemy funkcję
int()
, która w przypadku niepowodzenia zgłasza wyjątek ValueError
.
Obsługę wyjątków omówimy później.
Przetestuj kilkukrotnie działanie programu.

1.1.5. Pętla for
Trafienie za pierwszym razem wylosowanej liczby jest bardzo trudne, damy graczowi 3 szanse. Zmieniamy i uzupełniamy kod:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4import random
5
6liczba = random.randint(1, 10)
7# print("Wylosowana liczba:", liczba)
8
9for i in range(3):
10 odp = input("Jaką liczbę od 1 do 10 mam na myśli? ")
11 # print("Podałeś liczbę: ", odp)
12
13 if liczba == int(odp):
14 print("Zgadłeś! Dostajesz długopis!")
15 break
16 else:
17 print("Nie zgadłeś. Spróbuj jeszcze raz.")
18 print()
Pobieranie i sprawdzanie kolejnych liczb wymaga powtórzeń, czyli pętli (zob. pętla).
Blok powtarzających się operacji umieszczamy więc w instrukcji for
.
Ilość powtórzeń określa wyrażenie i in range(3)
. Zmienna iteracyjna i
to „licznik” powtórzeń. Przyjmuje on kolejne wartości wygenerowane przez
konstruktor range(n)
. Funkcja ta tworzy sekwencję liczb całkowitych od 0 do n-1.
A więc polecenia naszego skryptu, które umieściliśmy w pętli, wykonają się 3 razy,
chyba że… użytkownik trafi za 1 lub 2 razem. Wtedy warunek w instrukcji if
stanie się prawdziwy, wyświetli się informacja o nagrodzie,
a polecenie break
przerwie działanie pętli.
Uwaga
Uwaga na WCIĘCIA!
Podporządkowane bloki kodu wyodrębniamy za pomocą wcięć (zob. formatowanie kodu).
Standardem są 4 spacje i ich wielokrotności. Przyjęty rozmiar wcięć obowiązuje w całym pliku.
Błędy wcięć sygnalizowane są komunikatem IndentationError
.
W naszym kodzie linie 10, 13, 16 wcięte są na 4 spacje, zaś 14-15, 17-18 na 8.
1.1.5.1. Ćwiczenia
Sprawdźmy działanie konstruktora range()
w trybie interaktywnym interpretera Pythona.
W terminalu wpisz polecenia:
~$ 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.
Uzupełnij kod naszego programu, tak aby wyświetlane były komunikaty: „Próba 1”, „Próba 2” itd. przed podaniem liczby.
1.1.6. Instrukcja if…elif
Po 3 błędnej próbie program ponownie wyświetla komunikat: „Nie zgadłeś…”
Za pomocą członu elif
możemy wychwycić ten przypadek i właściwie go obsłużyć.
Kod przyjmie następującą postać:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4import random
5
6liczba = random.randint(1, 10)
7# print("Wylosowana liczba:", liczba)
8
9for i in range(3):
10 print("Próba ", i + 1)
11 odp = input("Jaką liczbę od 1 do 10 mam na myśli? ")
12 # print("Podałeś liczbę: ", odp)
13
14 if liczba == int(odp):
15 print("Zgadłeś! Dostajesz długopis!")
16 break
17 elif i == 2:
18 print("Miałem na myśli liczbę: ", liczba)
19 else:
20 print("Nie zgadłeś. Spróbuj jeszcze raz.")
21 print()
Ostateczny wynik działania naszego programu prezentuje się tak:

1.1.7. Materiały
Źródła:
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:
2025-04-12 o 10:21 w Sphinx 7.3.7
- Autorzy: