skip to Main Content
Lekcja Pythona #1 – Quiz

Lekcja Pythona #1 – Quiz

Post Series: Python

Przygotowanie

Python

Oczywiście potrzebujemy posiadać zainstalowanego pythona na naszym komputerze.

Zainstaluj python z oficjalnej strony, wybierz wersję 3.7 lub nowszą.

Podczas instalacji pamiętaj aby zaznaczyć podaną niżej opcję w trakcie instalacji.

python_installer

Visual Studio Code

Po drugie musimy posiadać jakiś edytor dla programistów, aby wygodnie pisać w nim kod do pythona.

Zainstaluj najnowszą wersję Visual Studio Code. Podczas instalacji również musisz zaznaczyć podobną opcję.

vs_code_installer

Jeżeli masz jakąś konsolę otwartą taką jak CMD lub PowerShell to musisz ją zamknąć przed wykonywaniem kolejnych poleceń

Tworzenie katalogów na kod

Powinniśmy mieć wszystko co potrzebne do rozpoczęcia nauki Pythona.

Otwórz konsolę systemu Windows przy użyciu skrótu klawiaturowego Windows+R w nowym oknie wpisz cmd i wciśnij Enter.

windows_run_cmd

Zostanie otworzone nowe okno z wierszem poleceń.

cmd

Pierwszą komendą jaką wykonamy będzie cd c:\ czyli przejście na samą górę do dysku C:\. cd – oznacza change directory, czyli zmianę aktualnego katalogu w którym pracujemy. Teraz stwórzmy katalog w którym będziemy trzymać nasze programy. Do stworzenia katalogu wykonaj polecenie mkdir dev, mkdir skrót od make directory, czyli utwórz katalog. Po utworzeniu nowego, pustego katalogu wejdźmy do niego znanym już poleceniem cd dev. Pozostało nam utworzyć katalog na pierwszą lekcję mkdir lesson1 i wejść do niego cd lesson1.

Sprawdź czy masz poprawnie zainstalowany i skonfigurowane środowisko python – poprzez wpisanie py --version

python_version

Teraz czas na włączenie edytor tekstu w którym będziemy programować.

Aby uruchomić Visual Studio Code w kontekście obecnego folderu należy wpisać code ., gdzie . oznacza obecny folder, który zostanie wykorzystany jako ten kontekst.

Visual Studio Code „konfiguracja”

Wewnątrz edytora utwórz nowy plik, i go od razu zapisz pod nazwą lesson.py. Dzięki zastosowaniu rozszerzenia .py, Visual Studio Code zastosuje odpowiednie kolorowanie składni języka dzięki czemu łatwiej będzie pisać kod.

Okno Visual Studio Code i konsolę cmd obok siebie, będzie często się przełączali między tymi dwoma oknami.

window_code_console_side_by_side

Przyda się także zainstalować rozszerzenie do Python dla Visual Studio Code, dzięki czemu edytor będzie nam podpowiadał co chcemy napisać.

Aby zainstalować popatrz na obrazek poniżej:

vs_code_install_python_extension

  1. Kliknij na ikonkę po lewej stronie
  2. Wpisz w wyszukiwarce python
  3. Kliknij na install

Po zainstalowaniu Install zmieni się na Reload to activate co spowoduje przeładowanie edytora i załadowanie rozszerzenia, że będzie gotowe do użytku.

Hello World

Można teraz zacząć pisać kod 🙂

Poznamy jak coś wyświetlić na ekranie i jak coś dostać od użytkownika.

Wewnątrz pliku lesson.py wpisz

print jest funkcją, która służy do wyświetlania informacji na ekran komputera.

Zapisz plik korzystając z skrótu Ctrl+S

następnie w konsoli cmd uruchom program wpisując py lesson.py

app_hello_world

FUN FACT: Dlaczego funkcja print nazywa się print a nie na przykład display? Otóż pierwsze komputery nie miały monitorów i aby coś wyświetlić trzeba było, coś wydrukować. I tak powstała funkcja print, która później została do „wydrukowania” czegoś na ekranie monitora.

Aby coś dostać użytkownika np. tekst potrzebujemy osobnej funkcji o nazwie input. Do funkcji input podajemy tekst który ma zostać wyświetlony przy prośbie o wpisanie tekstu. Funkcja zwraca nam tekst podany przez użytkownika naszego programu.

Wewnątrz pliku lesson.py wpisz

Pamiętaj, aby zapisać plik przed uruchomieniem :), bez tego będziesz uruchamiać stary plik i się denerwować – częsty błąd na początku.

Jak popatrzysz na nazwę pliku w Visual Studio Code, to zauważysz kropkę przy nazwie pliku.

vs_code_unsaved_file

Oznacza to stan pliku, który widzisz w edytorze nie zgadza się tym co możemy uruchomić poprzez konsolę.

Gdy uruchomimy naszą aplikację, gdy dojdziemy do pytania aplikacja się „zatrzyma” i będzie oczekiwać na wpisanie jakiegoś tekstu i wciśnięcie klawisza Enter.

Przykład działania:

app_how_are_you_doing

Jeszcze dodatkowe wytłumaczenie: zapis 'You are doing ' + answer oznacza łączenie twórz napisów w jeden.

Quiz

Już mamy podstawy do stworzenia pierwszej sensownej aplikacji, którą można komuś pokazać 🙂

Zacznij my od zera i wyczyśćmy plik lesson.py.

Nasza aplikacją będzie program – Quiz w którym będziemy zadawać pytania o nas, użytkownikowi, a na końcu obliczy procent poprawnych odpowiedzi.

Dobrze więc napiszmy pierwsze pytanie

Gdzie mieszkasz?

Więc program działa w następujący sposób

  1. Wyświetla „baner” naszego programu
  2. Zadaje pytanie i przechwytuje odpowiedź do zmiennej answer
  3. Dzięki wykorzystaniu if możemy nasz kod rozdzieć na dwie możliwe ścieżki
  4. Dobrą, gdy warunek answer == 'Szczecin' jest prawdziwy. Tutaj podwójne porównanie == oznacza: kochany komputrze sprawdź czy zmienna answer posiada to samo co podałem po prawej stronie.
  5. Lub
  6. Złą, gdy warunek wyżej podany nie jest spełniony.

UWAGA!: wcięcie przed print('good answer!') i print('bad answer!') jest obowiązkowe. Specyfiką Pythona są obowiązkowe wcięcia w kodzie.

Przykłady działania:

app_quiz_location

  1. Pokazuje zachowanie, gdy użytkownik podał poprawną odpowiedź
  2. Tutaj widać wynik błędnej odpowiedzi
  3. Natomiast tutaj widać odpowiedź poprawną, ale z nie zachowaną wielkością liter.

Jeżeli chcemy, aby przy sprawdzaniu odpowiedzi nie była sprawdzana wielkość liter, możemy przekształcić podaną odpowiedz na mniejsze litery. A następnie sprawdzić ją z wersją z posiadającą tylko małe litery.

Wystarczy przekształcić tą linijkę if answer == 'Szczecin': w taką linijkę if answer.lower() == 'szczecin':

Lubisz grę Half-Life?

Czas na kolejne pytanie, tym razem będzie to pytanie tak lub nie.

Poniżej kodu dotyczącego pytania gdzie mieszkasz, dopisz taki kawałek

Tutaj mamy wiele sposobów, aby powiedzieć twierdząco na zadane pytanie. Sprawdzamy czy podana odpowiedzieć pasuje do jednej z podanych wciągu możliwych odpowiedzi.

Własne funkcje

Skomplikujmy sobie trochę program… Powiedzmy, że chcemy, aby każde pytanie było zadane w jednej linijce, a odpowiedź udzielana w drugiej linijce tekstu. Dzięki czemu będzie to lepiej wyglądało.

Taki efekt można uzyskać zmieniając linijkę zawierającą wywołanie input na taką.

cała zmiana polegała na dodaniu \nANSWER>, gdzie \n jest znakiem nowej linii, czyli informacją dla Pythona że należy tam wstawić Enter.

Skoro taki format ma dotyczyć każdego pytania, to także musimy zmienić poprzednie pytanie oraz o tym pamiętać w przyszłości. Na szczęście w programowaniu możemy tworzyć własne funkcję, dzięki czemu łatwiej nam pamiętać o takich zależnościach.

Aby stworzyć taką funkcję należy na początku pliku napisać:

  • def to informacja dla Pythona, że będziemy definiować funkcję
  • ask_question to nazwa dla naszej funkcji
  • question to nazwa dla tekstu który będziemy przekazywać do funkcji
  • Następnie mamy połączenie pytania i naszego formatu odpowiedzi.
  • Ostatnią rzeczą to zwrócenie otrzymanej wartości, którą zmieniamy na mniejsze litery.

czyli po tych zmianach plik lesson.py powinien wyglądać następująco:

Pytanie o wiek

Ostatnim pytaniem, które chce dodać to pytanie o nasz wiek. Jeżeli nie obchodzi nas czy program za rok będzie już nieaktualny to rozwiązanie przypominało by to z pytania „Gdzie mieszkasz?”.

Wstawmy pewne utrudnienie, tak aby program bazował na twoim roku urodzenia, dla uproszczenia pominiemy miesiąc i dzień.

Potrzebujemy znać nasz rok urodzenia – to jest ta prosta rzecz 🙂 oraz aktualny rok w którym program jest uruchomiony, to jest ta trudniejsza rzecz.

Musimy zaimportować dodatkową funkcjonalność do naszego programu. Każdy program w Pythonie posiada jakiś zestaw funkcji – możliwości do wykorzystania. Ten zestaw jest dostępny zawsze, takie metody jak print czy input. Jako że programy w pythonie mogą mieć bardzo szerokie zastosowanie, to nie możliwe jest zaimportowanie wszystkich funkcjonalności jakie python dostarcza. Dlatego pozostawiono programiście możliwość na wybranie odpowiednich modułów na żądanie.

Aby zaimportować moduł należy na początku pliku wpisać import i nazwę modułu.

W naszym przypadku będziemy potrzebowali czegoś co służy do obsługi daty i czasu. Więc moduł nazywa się datetime.

Na samej górze pliku lesson.py napisz:

następnie zostanie napisanie kodu obsługującego pytanie

  1. Zadajemy pytanie
  2. Sprawdzamy czy odpowiedź jest liczbą, jeżeli nie jest liczbą – jest to błędna odpowiedź
  3. Przekształcamy ciąg znaków np. "30" na liczbę 30. Python nie może wykonać poprawnie operacji matematycznych na ciągach znaków
  4. Korzystając z zaimportowanego modułu datetime dostajemy się do obiektu datetime i uruchamiamy funkcję now() która zwraca czas w aktualnej chwili.
  5. Dokonujmy prostej operacji matematycznej jeżeli obecny rok minus podany rok równa się, datacie naszych urodzin wtedy możemy uznać że użytkownik dobrze podał wiek.

Procent poprawnych odpowiedzi

Została nam ostatnia rzecz do zrobienia, czyli policzenie procent poprawnych odpowiedzi.

Przed pierwszym pytaniem należy dodać zmienną na ilość poprawnych odpowiedzi

A następnie przy każdym print('good answer!') dodać linijkę:

która oznacza dodanie 1 do istniejącej ilości poprawnych odpowiedzi.

Po wszystkich pytaniach, musimy trochę policzyć i wyświetlić wynik.

  1. Bierzemy dobre odpowiedzi i dzielimy je przez wszystkie pytania jakie mamy w programie, a następnie mnożymy je raz 100
  2. Następnie wyświetlamy je użytkownikowi dzięki funkcji str() przekształcamy liczbę na na ciąg znaków.

Cały kod

Czyli po całej lekcji kod powinien wyglądać w tak:

I działać w taki sposób

app_quiz_final_form

Paweł Sołtysiak

Programista, domowy kucharz i "amator amerykańskiej polityki".
Zbieram informacje z całej sieci, po odrzuceniu chwastów i dodaniu swojej opinii publikuje na blogu.

Back To Top