-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
320 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,6 +7,7 @@ stworzonej przy użyciu frameworka Django. | |
.. toctree:: | ||
:maxdepth: 2 | ||
|
||
toto/index | ||
czat/index | ||
|
||
Metryka | ||
|
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,223 @@ | ||
Toto Lotek | ||
############## | ||
|
||
W Toto Lotku trzeba zgadywać liczby, napiszmy prosty program, w którym | ||
będziemy mieli podobne zadanie. Użyjemy języka Python. | ||
|
||
.. contents:: | ||
:depth: 1 | ||
:local: | ||
|
||
Plik programu | ||
************** | ||
|
||
Zaczynamy od utworzenia pliku o nazwie :file:`toto.py` w dowolnym katalogu | ||
za pomocą dowolnego edytora, np. :ref:`Geany <geany-opis>`. Zapis ``~$`` poniżej oznacza katalog | ||
domowy użytkownika. Obowiązkowa zawartość pliku: | ||
|
||
.. raw:: html | ||
|
||
<div class="code_no">Kod nr <script>var code_no = code_no || 1; document.write(code_no++);</script></div> | ||
|
||
.. highlight:: python | ||
.. literalinclude:: toto01.py | ||
:linenos: | ||
|
||
Pierwsza linia to ścieżka do interpretera Pythona (jest to język interpretowalny), | ||
druga linia informuje o użytym kodowaniu, dzięki czemu możemy używać | ||
polskich znaków. | ||
|
||
Losowanie liczby | ||
***************** | ||
|
||
Musimy wylosować liczby, ale zaczniemy od jednej. Potrzebujemy funkcji | ||
``randint(a, b)`` z modułu ``random``. Zwróci nam ona liczbę całkowitą | ||
z zakresu <a; b>. Do naszego pliku dopisujemy: | ||
|
||
.. raw:: html | ||
|
||
<div class="code_no">Kod nr <script>var code_no = code_no || 1; document.write(code_no++);</script></div> | ||
|
||
.. highlight:: python | ||
.. literalinclude:: toto02.py | ||
:linenos: | ||
:emphasize-lines: 4, 6-7 | ||
:lineno-start: 1 | ||
:lines: 1- | ||
|
||
Wylosowana liczba zostanie zapamiętana w zmiennej ``liczba``, instrukcja ``print`` | ||
wydrukuje ją na ekranie (tylko na razie dla celów testowych). Program | ||
możemy już uruchomić wydając w katalogu z plikiem polecenie: | ||
|
||
.. code-block:: bash | ||
~$ python toto.py | ||
.. note:: | ||
|
||
Terminal to tekstowa powłoka, pozwalająca sterować pracą komputera za | ||
pomocą poleceń wpisywanych z klawiatury (lub wklejanych ze schowka). | ||
W systemach Linux często da się go uruchomić skrótem :kbd:`Win+T` | ||
lub :kbd:`Ctrl+Alt+T`. Jeśli skróty nie działają szukamy w menu start. | ||
Skrót :kbd:`Ctrl+Shift+T` pozwala otworzyć kolejną kartę terminala, | ||
w każdej karcie możemy robić coś innego. | ||
|
||
Efekt działania naszego skryptu: | ||
|
||
.. figure:: img/toto02.png | ||
|
||
Zgadywanie | ||
*********** | ||
|
||
Liczbę mamy, niech gracz, czyli użytkownik ją zgadnie. Pytanie tylko, | ||
na ile prób mu pozwolimy. Zacznijmy od jednej! Dopisujemy zatem: | ||
|
||
.. raw:: html | ||
|
||
<div class="code_no">Kod nr <script>var code_no = code_no || 1; document.write(code_no++);</script></div> | ||
|
||
.. highlight:: python | ||
.. literalinclude:: toto03.py | ||
:linenos: | ||
:emphasize-lines: 7, 9 | ||
:lineno-start: 1 | ||
:lines: 1- | ||
|
||
Na początku zakomentowujemy znakiem ``#`` instrukcję drukującą wylosowaną liczbę. | ||
Nie będzie wykonywana :-) Liczbę podaną przez użytkownika pobieramy za pomocą | ||
instrukcji ``raw_input()`` i zapamiętujemy w zmiennej ``odp``. | ||
|
||
.. attention:: | ||
|
||
Zakładamy na razie, że gracz wprowadza poprawne dane, czyli liczby | ||
całkowite! | ||
|
||
Ćwiczenie 1 | ||
============= | ||
|
||
Dopisz odpowiednie polecenie, które wyświetli liczbę podaną przez gracza. | ||
Przetestuj jego działanie. | ||
|
||
.. figure:: img/toto03.png | ||
|
||
Sprawdzanie | ||
************** | ||
|
||
Mamy wylosowaną liczbę i strzał gracza, musimy sprawdzić, czy trafił. | ||
Uzupełniamy nasz program: | ||
|
||
.. raw:: html | ||
|
||
<div class="code_no">Kod nr <script>var code_no = code_no || 1; document.write(code_no++);</script></div> | ||
|
||
.. highlight:: python | ||
.. literalinclude:: toto04.py | ||
:linenos: | ||
:emphasize-lines: 12-15 | ||
:lineno-start: 1 | ||
:lines: 1- | ||
|
||
Używamy instrukcji warunkowej ``if``, która sprawdza prawdziwość warunku | ||
``liczba == odp``. Jeżeli wywlosowana i podana liczba są sobie równe (``==``), | ||
wyświetlamy informację o wygranej, w przeciwnym razie ``else:`` zachętę | ||
do ponownej próby. | ||
|
||
Przetestuj kilkukrotnie działanie programu. | ||
|
||
.. figure:: img/toto04.png | ||
|
||
Do 3 razy sztuka | ||
***************** | ||
|
||
Trafienie za pierwszym razem wylosowanej liczby jest bardzo trudne, spróbujmy | ||
dać graczowi 3 szanse. Zmieniamy i uzupełniamy kod: | ||
|
||
.. raw:: html | ||
|
||
<div class="code_no">Kod nr <script>var code_no = code_no || 1; document.write(code_no++);</script></div> | ||
|
||
.. highlight:: python | ||
.. literalinclude:: toto05.py | ||
:linenos: | ||
:emphasize-lines: 9 | ||
:lineno-start: 1 | ||
:lines: 1- | ||
|
||
Pobieranie i sprawdzanie kolejnych liczb wymaga powórzenia zakodowanych | ||
wcześniej operacji. Do tego celu używamy pętli ``for``. W jej wnętrzu umieszczamy | ||
blok poprzednio napisanego kodu odpowiednio wcięty (nt. wcięć zobacz niżej). | ||
|
||
Ilość powtórzeń określa wyrażenie ``i in range(3)``. Zmienna iteracyjna ``i`` | ||
to "licznik" powtórzeń. Będzie się on zmieniał tyle razy, ile wartości | ||
zwróci funkcja ``range(n)``. Funkcja ta generuje listę liczb całkowitych | ||
od *0* do *n-1*. | ||
|
||
Ćwiczenie 2 | ||
============= | ||
|
||
Zamiast się domyślać, sprawdźmy działanie omawianej funkcji w trybie interaktywnym | ||
interpretera Pythona. W terminalu wpisz polecenia: | ||
|
||
.. code-block:: python | ||
~$ python | ||
>>> range(3) | ||
>>> for i in range(3) | ||
... print i | ||
... | ||
>>> exit() | ||
Jak wynika z powyższego, zmienna ``i`` przyjmie wartość 0, 1 i 2, czyli | ||
pętla ``for`` wykona się 3 razy. Wszystkie polecenia znajdujące się wewnątrz | ||
pętli również 3 razy, chyba że... Właśnie, a jeżeli 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. Przetestuj działanie programu, ale wcześniej przeczytaj jeszcze poniższą | ||
uwagę: | ||
|
||
.. note:: | ||
|
||
W kodzie Pythona bardzo ważną rolę pełnią wcięcia. W obrębie całego pliku | ||
muszą one być równe (najczęściej 4 spacje i ich wielokrotności), | ||
służą bowiem wydzielaniu bloków kodu. Wskazują więc, które polecenia, | ||
którym są podporządkowane. W naszym przypadku linie 10, 13 i 16 | ||
muszą mieć wcięcia pojedyncze (np. 4 spacje), a linie 14-15, 17-18 | ||
podwójne (np. 8 spacji). Inaczej pojawią się błędy ``IndentationError``. | ||
|
||
Ćwiczenie 3 | ||
============= | ||
|
||
Uzupełnij kod, tak aby program wyświetlał informację "Próba 1", "Próba 2" | ||
itd. przed podaniem liczby. **Wskazówki**: Wykorzystaj zmienną ``i`` i zobacz również w trybie interaktywnym, | ||
co się dzieje, kiedy wpiszesz: | ||
|
||
.. code-block:: python | ||
~$ python | ||
>>> i = 0 | ||
>>> print i | ||
>>> i = i + 1 | ||
>>> print i | ||
Ćwiczenie 4 | ||
============= | ||
|
||
Po 3 błędnej próbie program ponownie wyświetla komunikat: "Nie zgadłeś... | ||
Spróbuj jeszcze raz." Użyj intrukcji ``if`` z odpowiednim warunkiem | ||
i wcięciami (!), aby po 3 nieudanej próbie wyświetlić komunikat: | ||
"Miałem na myśli liczbę: liczba". | ||
|
||
Ostateczny wynik działania naszego programu prezentuje się tak: | ||
|
||
.. figure:: img/toto07.png | ||
|
||
Duży Lotek | ||
************ | ||
|
||
Jedna liczba to za mało, wylosujmy ich 5! | ||
|
||
.. raw:: html | ||
|
||
<hr /> | ||
|
||
Jeżli masz ochotę na więcej, daj znać! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#! /usr/bin/env python | ||
# -*- coding: utf-8 -*- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#! /usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
import random | ||
|
||
liczba = random.randint(1, 10) | ||
print "Wylosowana liczba:",liczba |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#! /usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
import random | ||
|
||
liczba = random.randint(1, 10) | ||
#print "Wylosowana liczba:",liczba | ||
|
||
odp = raw_input("Jaką liczbę od 1 do 10 mam na myśli? ") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
#! /usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
import random | ||
|
||
liczba = random.randint(1, 10) | ||
#print "Wylosowana liczba:",liczba | ||
|
||
odp = raw_input("Jaką liczbę od 1 do 10 mam na myśli? ") | ||
#print "Podałeś liczbę: ",odp | ||
|
||
if liczba == odp: | ||
print "Zgadłeś! Dostajesz długopis!" | ||
else: | ||
print "Nie zgadłeś. Spróbuj jeszcze raz." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#! /usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
import random | ||
|
||
liczba = random.randint(1, 10) | ||
#print "Wylosowana liczba:",liczba | ||
|
||
for i in range(3): | ||
odp = raw_input("Jaką liczbę od 1 do 10 mam na myśli? ") | ||
#print "Podałeś liczbę: ",odp | ||
|
||
if liczba == odp: | ||
print "Zgadłeś! Dostajesz długopis!" | ||
break | ||
else: | ||
print "Nie zgadłeś. Spróbuj jeszcze raz." | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
#! /usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
import random | ||
|
||
liczba = random.randint(1, 10) | ||
#print "Wylosowana liczba:",liczba | ||
|
||
for i in range(3): | ||
print "Próba ",i+1 | ||
odp = raw_input("Jaką liczbę od 1 do 10 mam na myśli? ") | ||
#print "Podałeś liczbę: ",odp | ||
|
||
if liczba == odp: | ||
print "Zgadłeś! Dostajesz długopis!" | ||
break | ||
else: | ||
print "Nie zgadłeś. Spróbuj jeszcze raz." | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#! /usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
import random | ||
|
||
liczba = random.randint(1, 10) | ||
#print "Wylosowana liczba:",liczba | ||
|
||
for i in range(3): | ||
print "Próba ",i+1 | ||
odp = raw_input("Jaką liczbę od 1 do 10 mam na myśli? ") | ||
#print "Podałeś liczbę: ",odp | ||
|
||
if liczba == odp: | ||
print "Zgadłeś! Dostajesz długopis!" | ||
break | ||
else: | ||
if i == 2: | ||
print "Miałem na myśli liczbę: ", liczba | ||
else: | ||
print "Nie zgadłeś. Spróbuj jeszcze raz." | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters