Lekcja Pythona #1 – Quiz
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.
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ę.
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.
Zostanie otworzone nowe okno z wierszem poleceń.
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
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.
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:
- Kliknij na ikonkę po lewej stronie
- Wpisz w wyszukiwarce
python
- 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('Hello, World!')
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
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
print('Hello, World!')
answer = input('How do you do? ')
print('You are doing ' + answer)
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.
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:
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?
print('===== Quiz ====')
answer = input('Where are you living? ')
if answer == 'Szczecin':
print('good answer!')
else:
print('bad answer!')
Więc program działa w następujący sposób
- Wyświetla „baner” naszego programu
- Zadaje pytanie i przechwytuje odpowiedź do zmiennej
answer
- Dzięki wykorzystaniu
if
możemy nasz kod rozdzieć na dwie możliwe ścieżki - 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. - Lub
- 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:
- Pokazuje zachowanie, gdy użytkownik podał poprawną odpowiedź
- Tutaj widać wynik błędnej odpowiedzi
- 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
answer = input('Do Pawel like Half-Life video games? ')
if answer.lower() in ['true', '1', 't', 'y', 'yes', 'yeah', 'yup', 'tak']:
print('good answer!')
else:
print('bad answer!')
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ą.
answer = input('Do Pawel like Half-Life video games?\nANSWER> ')
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 ask_question(question):
answer = input(question + '\nANSWER> ')
return answer.lower()
def
to informacja dla Pythona, że będziemy definiować funkcjęask_question
to nazwa dla naszej funkcjiquestion
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:
def ask_question(question):
answer = input(question + '\nANSWER> ')
return answer.lower()
print('===== Quiz ====')
answer = ask_question('Where are you living?')
if answer == 'szczecin':
print('good answer!')
else:
print('bad answer!')
answer = ask_question('Do Pawel like Half-Life video games?')
if answer in ['true', '1', 't', 'y', 'yes', 'yeah', 'yup', 'tak']:
print('good answer!')
else:
print('bad answer!')
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:
import datetime
następnie zostanie napisanie kodu obsługującego pytanie
answer = ask_question('How old am I?')
if answer.isdigit():
years = int(answer)
now = datetime.datetime.now()
if (now.year - years) == 1991:
print('good answer!')
else:
print('bad answer!')
else:
print('bad answer!')
- Zadajemy pytanie
- Sprawdzamy czy odpowiedź jest liczbą, jeżeli nie jest liczbą – jest to błędna odpowiedź
- Przekształcamy ciąg znaków np.
"30"
na liczbę30
. Python nie może wykonać poprawnie operacji matematycznych na ciągach znaków - Korzystając z zaimportowanego modułu
datetime
dostajemy się do obiektudatetime
i uruchamiamy funkcjęnow()
która zwraca czas w aktualnej chwili. - 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
good_answers = 0
A następnie przy każdym print('good answer!')
dodać linijkę:
good_answers = good_answers + 1
która oznacza dodanie 1 do istniejącej ilości poprawnych odpowiedzi.
Po wszystkich pytaniach, musimy trochę policzyć i wyświetlić wynik.
percentage = (good_answers/3) * 100
print("you got " + str(percentage) + "% of good answers!")
- Bierzemy dobre odpowiedzi i dzielimy je przez wszystkie pytania jakie mamy w programie, a następnie mnożymy je raz 100
- 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:
import datetime
def ask_question(question):
answer = input(question + '\nANSWER> ')
return answer.lower()
print('===== Quiz ====')
good_answers = 0
answer = ask_question('Where are you living?')
if answer == 'szczecin':
good_answers = good_answers + 1
print('good answer!')
else:
print('bad answer!')
answer = ask_question('Do Pawel like Half-Life video games?')
if answer in ['true', '1', 't', 'y', 'yes', 'yeah', 'yup', 'tak']:
good_answers = good_answers + 1
print('good answer!')
else:
print('bad answer!')
answer = ask_question('How old am I?')
if answer.isdigit():
years = int(answer)
now = datetime.datetime.now()
if (now.year - years) == 1991:
good_answers = good_answers + 1
print('good answer!')
else:
print('bad answer!')
else:
print('bad answer!')
percentage = (good_answers/3) * 100
print("you got " + str(percentage) + "% of good answers!")
I działać w taki sposób