Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Implementacja w języku Python – podsumowanie

Wiemy, jak przebiega partia gry w wisielca, spróbujmy więc napisać program, który ją odzwierciedli. Przedstawimy alternatywę dla realizacji kodu gry zaprezentowanej w filmie samouczku.

Pierwszym krokiem jest zadeklarowanie zmiennych:

  • zycia - przechowuje pozostałą liczbę prób (pozostałe życia), służącą do odgadnięcia litery lub całego słowa, jej wartość będzie równa liczbie znaków w słowie do odgadnięcia,

  • slowo - przechowuje słowo do odgadnięcia,

  • odgadniete – przechowuje licznik odgadniętych znaków (liczbę punktów – za każdą odgadniętą literę przyznajemy 1 pkt.).

Kolejnym krokiem jest pobranie od pierwszego gracza słowa, które gracz drugi będzie próbował odgadnąć. Ciąg znaków pobrany z klawiatury zapisujemy w zmiennej slowo.

Linia 1. slowo znak równości str otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj słowo do odgadnięcia dwukropek cudzysłów zamknij nawias okrągły.

Ustalamy liczbę żyć na tyle, ile wynosi liczba liter hasła do odgadnięcia. Ustawiamy również licznik odgadniętych znaków hasła na zero.

Linia 1. slowo znak równości str otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj słowo do odgadnięcia dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 2. zycia znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły. Linia 3. odgadniete znak równości 0.

Teraz należy zadeklarować pętlę, w której będzie się odbywała najważniejsza część algorytmu – pobieranie od drugiego gracza kolejnych liter (lub całego słowa). Program następnie sprawdzi, czy pobrane łańcuchy znaków są częścią podanego słowa.

Linia 1. while zycia zamknij nawias ostrokątny 0 dwukropek. Linia 2. odgadywane znak równości str otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj literę lub całe słowo do sprawdzenia dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły.

Ponieważ gracz może zgadywać pojedynczą literę lub całe słowo, to należy obsłużyć oba przypadki za pomocą instrukcji warunkowejinstrukcja warunkowainstrukcji warunkowej if ... else.

Linia 1. if len otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości znak równości 1 dwukropek. Linia 3. else dwukropek.

Zajmijmy się teraz pierwszym przypadkiem. Użytkownik odgaduje w nim pojedynczą literę. Wewnątrz instrukcji warunkowej sprawdzane jest, czy podana przez gracza litera występuje w wymyślonym słowie. Jeżeli występuje, zostaje wyświetlony odpowiedni komunikat, a zmienna zostaje inkrementowana o tyle, ile razy dana litera występuje w słowie.

Następnie program sprawdza, czy odgadnięte zostały wszystkie litery słowa.

W przeciwnym przypadku program również wyświetla odpowiedni komunikat, ale dekrementuje zmienną zycia.

Linia 1. if len otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości znak równości 1 dwukropek. Linia 2. if odgadywane in slowo dwukropek. Linia 3. print otwórz nawias okrągły cudzysłów Słowo zawiera literę dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 4. odgadniete plus znak równości slowo kropka count otwórz nawias okrągły odgadywane zamknij nawias okrągły. Linia 5. if odgadniete znak równości znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły dwukropek. Linia 6. break. Linia 7. else dwukropek. Linia 8. print otwórz nawias okrągły cudzysłów Słowo nie zawiera litery dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 9. zycia minus znak równości 1.

W tym momencie użytkownik zdobywa punkt za każdym razem, gdy poda literę znajdującą się w słowie. Również wtedy, kiedy dana litera została już podana. Jak rozwiązać ten problem?

Odgadnięte litery będziemy dodawać do tablicy. Program będzie sprawdzał, czy zgadnięta litera została już podana. Jeśli tak, nie będzie przyznawał za nią punktu.

Najpierw zadeklarujemy zmienną zgadniete_litery, która będzie przechowywać zgadnięte litery. Zaimplementujmy pustą listę:

Linia 1. zgadniete podkreślnik litery znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.

Dodajmy odpowiedni warunek:

Linia 1. if len otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości znak równości 1 dwukropek. Linia 2. if odgadywane in slowo dwukropek. Linia 3. if odgadywane not in zgadniete podkreślnik litery dwukropek. Linia 4. print otwórz nawias okrągły cudzysłów Słowo zawiera literę dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 5. odgadniete plus znak równości slowo kropka count otwórz nawias okrągły odgadywane zamknij nawias okrągły. Linia 6. zgadniete podkreślnik litery kropka append otwórz nawias okrągły odgadywane zamknij nawias okrągły. Linia 7. if odgadniete znak równości znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły dwukropek. Linia 8. break. Linia 9. else dwukropek. Linia 10. print otwórz nawias okrągły cudzysłów Słowo nie zawiera litery dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 11. zycia minus znak równości 1.

Teraz zdefiniujmy operacje, których wykonywanie nastąpi, gdy użytkownik nie wprowadzi pojedynczej litery tylko ciąg znaków.

Sprawdzamy, czy ciąg znaków podany przez drugiego gracza jest taki sam jak ciąg znaków wymyślony przez gracza pierwszego, tj. czy użytkownik poprawnie odgadł całe słowo. W przypadku, gdy wyrazy te są identyczne, oznacza to, że gracz drugi poprawnie odgadł słowo i następuje wyjście z pętli. W przeciwnym wypadku dekrementujemydekrementacjadekrementujemy zmienną zycia, która określa liczbę pozostałych prób.

Linia 1. if len otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości znak równości 1 dwukropek. Linia 2. if odgadywane in slowo dwukropek. Linia 3. if odgadywane not in zgadniete podkreślnik litery dwukropek. Linia 4. print otwórz nawias okrągły cudzysłów Słowo zawiera literę dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 5. odgadniete plus znak równości slowo kropka count otwórz nawias okrągły odgadywane zamknij nawias okrągły. Linia 6. zgadniete podkreślnik litery kropka append otwórz nawias okrągły odgadywane zamknij nawias okrągły. Linia 7. if odgadniete znak równości znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły dwukropek. Linia 8. break. Linia 9. else dwukropek. Linia 10. print otwórz nawias okrągły cudzysłów Słowo nie zawiera litery dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 11. zycia minus znak równości 1. Linia 13. else dwukropek. Linia 14. if odgadywane znak równości znak równości slowo dwukropek. Linia 15. print otwórz nawias okrągły cudzysłów Podano poprawne słowo wykrzyknik cudzysłów zamknij nawias okrągły. Linia 16. odgadniete znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły. Linia 17. break. Linia 18. else dwukropek. Linia 19. print otwórz nawias okrągły cudzysłów Podane słowo nie jest hasłem cudzysłów zamknij nawias okrągły. Linia 20. zycia minus znak równości 1.

Po każdej iteracji pętli wyświetlana jest informacja o pozostałych próbach.

Linia 1. print otwórz nawias okrągły cudzysłów Pozostałe życia dwukropek cudzysłów przecinek zycia zamknij nawias okrągły.

Ostatnie, co należy zrobić (już poza główną pętlą), to wyświetlić komunikat o przebiegu gry:

Linia 1. if odgadniete znak równości znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły dwukropek. Linia 2. print otwórz nawias okrągły cudzysłów Udało ci się odgadnąć słowo dwukropek cudzysłów przecinek slowo zamknij nawias okrągły. Linia 3. else dwukropek. Linia 4. print otwórz nawias okrągły cudzysłów Niestety nie udało ci się odgadnąć słowa cudzysłów zamknij nawias okrągły.

Pełny kod programu prezentuje się następująco:

Linia 1. slowo znak równości str otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj słowo do odgadnięcia dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 2. zycia znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły. Linia 3. odgadniete znak równości 0. Linia 4. zgadniete podkreślnik litery znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 6. while zycia zamknij nawias ostrokątny 0 dwukropek. Linia 7. odgadywane znak równości str otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj literę lub całe słowo do sprawdzenia dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 9. if len otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości znak równości 1 dwukropek. Linia 10. if odgadywane in slowo dwukropek. Linia 11. if odgadywane not in zgadniete podkreślnik litery dwukropek. Linia 12. print otwórz nawias okrągły cudzysłów Słowo zawiera literę dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 13. odgadniete plus znak równości slowo kropka count otwórz nawias okrągły odgadywane zamknij nawias okrągły. Linia 14. zgadniete podkreślnik litery kropka append otwórz nawias okrągły odgadywane zamknij nawias okrągły. Linia 15. if odgadniete znak równości znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły dwukropek. Linia 16. break. Linia 17. else dwukropek. Linia 18. print otwórz nawias okrągły cudzysłów Słowo nie zawiera litery dwukropek cudzysłów przecinek odgadywane zamknij nawias okrągły. Linia 19. zycia minus znak równości 1. Linia 20. else dwukropek. Linia 21. if odgadywane znak równości znak równości slowo dwukropek. Linia 22. print otwórz nawias okrągły cudzysłów Podano poprawne słowo wykrzyknik cudzysłów zamknij nawias okrągły. Linia 23. odgadniete znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły. Linia 24. break. Linia 25. else dwukropek. Linia 26. print otwórz nawias okrągły cudzysłów Podane słowo nie jest hasłem cudzysłów zamknij nawias okrągły. Linia 27. zycia minus znak równości 1. Linia 29. print otwórz nawias okrągły cudzysłów Pozostałe życia dwukropek cudzysłów przecinek zycia zamknij nawias okrągły. Linia 31. if odgadniete znak równości znak równości len otwórz nawias okrągły slowo zamknij nawias okrągły dwukropek. Linia 32. print otwórz nawias okrągły cudzysłów Udało ci się odgadnąć słowo dwukropek cudzysłów przecinek slowo zamknij nawias okrągły. Linia 33. else dwukropek. Linia 34. print otwórz nawias okrągły cudzysłów Niestety nie udało ci się odgadnąć słowa dwukropek cudzysłów przecinek slowo zamknij nawias okrągły.
Polecenie 1

Zastanów się, o jakie funkcjonalności można rozszerzyć działanie programu.

21
Polecenie 2

Możemy wprowadzić element nieprzewidywalności i stworzyć grę, w której wyrazy do odgadnięcia będą dobierane losowo. Spróbujmy zdefiniować dodatkową funkcję, która wybierze słowo, a następnie uruchomi funkcję wisielec() z nim jako argumentem.

Słownik

ASCII
ASCII

(ang. American Standard Code for Information Interchange) pierwotnie siedmiobitowy system kodowania znaków (współcześnie rozszerzony do ośmiu bitów); w oryginalnej wersji kodom z zakresu 0–127 przyporządkowano 26 liter łacińskich, 10 cyfr (0...9) oraz dodatkowe znaki

dekrementacja
dekrementacja

operacja zmniejszenia wartości zmiennej o jeden; szeroko wykorzystywana w programowaniu np. jako zmiana wartości iteratora w pętli

instrukcja warunkowa
instrukcja warunkowa

element algorytmu pozwalający na sprawdzenie jednego lub kilku warunków, a następnie zdefiniowanie, jakie czynności mają być wykonane, jeśli dane warunki są spełnione lub niespełnione (służy do sterowania programem)