Pierwsze koty za płoty – Python – pierwsza aplikacja

devkot.pl 11 miesięcy temu

Przed Tobą kolejny artykuł z serii dotyczącej podstaw programowania z wykorzystaniem języka Python. W ramach tego artykułu zaimplementujesz aplikację konsolową typu kalkulator.

Mam nadzieję, iż zapoznałeś się z pierwszym artykułem z serii Pierwsze koty za płoty – Python. jeżeli jeszcze nie miałeś okazji go przeczytać to szczerze polecam, ponieważ do prac nad aplikacją będziesz potrzebował działającego środowiska developerskiego (interpretera oraz programu do edycji kodu źródłowego – PyCharm). Artykuł ten możesz znaleźć pod tym linkiem: Pierwsze koty za płoty – Python.

Python - pierwszy projekt

Utworzenie projektu

Pierwszym krokiem, związanym z pracą nad nową aplikacją/skryptem jest utworzeni projektu. Proces ten został przedstawiony w poprzednim artykule, dlatego teraz przytoczę go w skróconej wersji. W celu utworzenia nowego projektu uruchom program PyCharm, następnie wybierz opcję New project widoczną w prawym górnym rogu ekranu. Następnie wybierz lokalizację oraz nazwę projektu. Jako nazwę polecam użyć Calculator.

W ten sposób utworzyłeś projekt, który dalej będziemy rozwijać. Jest on bliźniaczo podobny do tego z pierwszego artykułu dlatego, jeżeli posiadasz już projekt Sample to możesz go wykorzystać w ramach tego artykułu.

Wyświetlanie tekstu na ekranie

Jeśli już utworzyłeś projekt, który będziesz rozwijać to możemy przejść do sedna. Pierwszą rzeczą, którą powinieneś wykonać jest wyświetlenie pliku main.py oraz usunięcie jego całej zawartości. Przykładowy kod zwarty w tym pliku nie będzie Ci już dłużej potrzebny, w jego miejsce napiszesz własny.

Pierwszą mechaniką, którą się zajmiesz jest wyświetlenie tekstu opisującego opcje kalkulatora na ekranie. W tym celu wykorzystasz wbudowaną w Pythona funkcję print. Jej składnia jest bardzo prosta, mianowicie aby jej użyć wystarczy napisać print(„Treść komunikatu do wyświetlenia”). Funkcja ta wyświetla komunikat w nowej linii na oknie konsoli. Kalkulator przedstawiony w ramach tego artykułu będzie wspierał 4 operacje:

  1. Dodawanie
  2. Odejmowanie
  3. Mnożenie
  4. Dzielenie
Kod wyświetlający dostępne opcje na ekranie znajdziesz poniżej:
print ("Pierwsze koty za płoty - Python - Kalkulator") print() print("Dostępne opcje:") print("1 - Dodawanie") print("2 - Odejmowanie") print("3 - Mnożenie") print("4 - Dzielenie") print()

Listing 1 – wyświetlanie tekstu na oknie konsoli

Kalkulator - dostępne opcje

Pobieranie danych z okna konsoli oraz konwersja typów

Skoro już potrafisz wyświetlać tekst na ekranie konsoli to teraz nadszedł czas, aby dodać kod odpowiedzialny za pobieranych danych od użytkownika. Służy do tego funkcja input(prompt). Funkcja input domyślnie zwraca wartość tekstową (string).
print ("Pierwsze koty za płoty - Python - Kalkulator") print() print("Dostępne opcje:") print("1 - Dodawanie") print("2 - Odejmowanie") print("3 - Mnożenie") print("4 - Dzielenie") print() option = int(input("Wybierz opcję: ")) print()

Powyższy kod pobiera z okna konsoli wartość wprowadzoną przez użytkownika oraz konwertuje ją na typ całkowitoliczbowy (int), następnie przypisuje jej wartość do zmiennej option. Konwersja typu wartości z tekstu na liczby może powodować błędy, np. czy wiesz co się stanie jeżeli spróbujesz na ekranie konsoli wpisać coś innego niż liczbę, np. słowo Devkot?

Kalkulator - błąd konwersji tekstu na liczbę

Powyższy zrzut ekranu przedstawia wynik podania tekstu zamiast liczby. Wynikiem takiego zachowania jest błąd w programie w efekcie, którego program przestaje działać.

Obsługa wyjątków

W celu ochrony programu przed podobnymi błędami jak powyższy stosuje się tzw. mechanizm obsługi wyjątków. Pewnie zastanawiasz się czym jest ten cały wyjątek(exception)? Jest to mechanizm służący do raportowania błędów powstałych podczas wykonywania program nie może dalej kontynuować swojego działania. Do ich obsługi wykorzystuje się specjalną konstrukcję try-except.

Blok try zawiera kod, który może wyrzucić wyjątek. Następnie w bloku except można zdefiniować, które wyjątki chcemy obsłużyć i jakie czynności mają zostać wykonane w momencie ich wystąpienia.

Można też użyć bloku finally, który wykona się niezależnie od tego, czy wyjątek został wyrzucony czy nie.

print("Pierwsze koty za płoty - Python - Kalkulator") print() print("Dostępne opcje:") print("1 - Dodawanie") print("2 - Odejmowanie") print("3 - Mnożenie") print("4 - Dzielenie") try: print() option = int(input("Wybierz opcję: ")) print() except ValueError: print("Wybrałeś nieprawidłową opcję. Uruchom program ponownie") except Exception: print("Nieznany błąd, spróbuj uruchomić program ponownie")

W powyższym przykładzie wyjątek ValueError zostanie przechwycony i wyświetli się w konsoli komunikat „Wybrałeś nieprawidłową opcję. Uruchom program ponownie„.

Kalkulator - obsługa wyjątków

Wyjątki możemy rzucać również z kodu, który piszemy. Służy do tego słowo najważniejsze raise. Mechanizm ten jest używany, gdy z jakiegoś powodu nasza funkcja/program nie może dalej działać i chcemy przerwać jej działanie. Poniższy kod prezentuje w jaki sposób można rzucać wyjątek.

print("Pierwsze koty za płoty - Python - Kalkulator") print() print("Dostępne opcje:") print("1 - Dodawanie") print("2 - Odejmowanie") print("3 - Mnożenie") print("4 - Dzielenie") try: print() print("Przed wyjątkiem") raise Exception("Bład testowy") option = int(input("Wybierz opcję: ")) print() except ValueError: print("Wybrałeś nieprawidłową opcję. Uruchom program ponownie") except Exception: print("Nieznany błąd, spróbuj uruchomić program ponownie")

Instrukcje warunkowe

Instrukcje warunkowe w Pythonie umożliwiają zdefiniowanie bloku kodu, który zostanie wykonany tylko gdy określony warunek zostanie spełniony. Do dyspozycji mamy trzy instrukcje warunkowe: if, elif oraz else.

Słowo najważniejsze if inicjuje instrukcję warunkową, która wymaga przekazania warunku logicznego. jeżeli warunek jest spełniony, blok kodu zostanie wykonany. Dodatkowo, słowo najważniejsze elif (skrót od else if) może być użyte do dodawania kolejnych warunków. Wreszcie, słowo najważniejsze else umożliwia wykonanie kodu, gdy żaden z warunków nie zostanie spełniony.

Poniższy kod przedstawia wykorzystanie instrukcji warunkowych do wybrania odpowiedniego działania kalkulatora.

print("Pierwsze koty za płoty - Python - Kalkulator") print() print("Dostępne opcje:") print("1 - Dodawanie") print("2 - Odejmowanie") print("3 - Mnożenie") print("4 - Dzielenie") try: print() print("Przed wyjątkiem") option = int(input("Wybierz opcję: ")) print() if option == 1: print("Dodawanie") a = int(input("Podaj liczbę: ")) b = int(input("Podaj kolejną liczbę: ")) print(f"Wynik dodawania to: {a + b}") elif option == 2: print("Odejmowanie") a = int(input("Podaj liczbę: ")) b = int(input("Podaj drugą liczbę: ")) print(f"Wynik odejmowania to: {a - b}") elif option == 3: print("Mnożenie") elif option == 4: print("Dzielenie"); else: print("Błedny wybór spróbój ponownie") except ValueError: print("Wybrałeś nieprawidłową opcję. Uruchom program ponownie") except Exception: print("Nieznany błąd, spróbuj uruchomić program ponownie")

Wraz z implementacją instrukcji warunkowych, dodaliśmy implementację 2 z 4 dostępnych opcji. Jak możesz zauważyć, sama logika działania jest dosyć prosta, wystarczy tylko pobrać od użytkownika potrzebne dane oraz wykonać akcję wybraną przez użytkownika. Specjalnie w przykładowym kodzie zaimplementowałem tylko 2 pierwsze opcje, aby zostawić Ci przestrzeń na praktykę. Spróbuj napisać własną implementację mnożenia i dzielenia wzorując się na przykładowym kodzie.

Pętle

Ostatnim zagadnieniem, które poruszymy w ramach tego artykułu są pętle. Są to specjalne konstrukcje, które pozwalają na wielokrotne wykonywanie danego kodu. Python oferuje dwa rodzaje pętli: for oraz while. Pierwsza z nich służy do przechodzenia (iterowania) po kolejnych elementach np. listy. Pozwala ona także na użycie funkcji rangę, w celu określenia konkretnej liczby powtórzeń. Więcej na temat pętli for możesz przeczytać na tej stronie: Python For Loops. Natomiast pętla while wykonuje się dopóki warunek pętli zwraca wartość True.

Składnia pętli for: for item in collection

Składnia pętli while: while(warunek_pętli)

Skoro wiesz już czym są pętle, spróbujmy dodać je do kalkulatora. Dzięki wykorzystaniu pętli wyeliminujemy problem ponownego uruchamiania aplikacji za każdym razem, gdy operacja zostanie wykonana.

print("Pierwsze koty za płoty - Python - Kalkulator") shouldExit = False while not shouldExit: print() print("Dostępne opcje:") print("1 - Dodawanie") print("2 - Odejmowanie") print("3 - Mnożenie") print("4 - Dzielenie") print("5 - Wyłącz") try: print() print("Przed wyjątkiem") option = int(input("Wybierz opcję: ")) print() if option == 1: print("Dodawanie") a = int(input("Podaj liczbę: ")) b = int(input("Podaj kolejną liczbę: ")) print(f"Wynik dodawania to: {a + b}") elif option == 2: print("Odejmowanie") a = int(input("Podaj liczbę: ")) b = int(input("Podaj drugą liczbę: ")) print(f"Wynik odejmowania to: {a - b}") elif option == 3: print("Mnożenie") elif option == 4: print("Dzielenie") elif option == 5: shouldExit = True else: print("Błedny wybór spróbój ponownie") except ValueError: print("Wybrałeś nieprawidłową opcję. Uruchom program ponownie") except Exception: print("Nieznany błąd, spróbuj uruchomić program ponownie")

Jak widzisz dodanie pętli do kalkulatora jest całkiem proste. W tym przypadku wybrałem pętle while, ponieważ program powinien działać do momentu, gdy użytkownik świadomie będzie chciał opuścić program. Z tego względu zdecydowałem się również dodać 5 opcje pod nazwą Wyłącz. Wszystkie koniecznie zmiany potrzebne do dodania pętli while do kalkulatora znajdują się w liniach 3-5 oraz 34-35.

W ten oto sposób napisałeś swój pierwszy skrypt w Pythonie. Jest to prosty ale funkcjonalny kalkulator, którego implementacja pozwoliła Ci zapoznać się i wykorzystać w praktyce podstawowe konstrukcje dostarczane przez język Python, takie jak: instrukcje warunkowe, pętle, mechanizm obsługi wyjątków. Jak widzisz na ostatnim listingu przez cały czas brakuje implementacji dzielenia oraz mnożenia. Spróbuj zaimplementować ich logikę samemu, dzięki temu utrwalisz część materiału zawartego w tym artykule. jeżeli masz pomysł na dalszy rozwój tego skryptu to śmiało go rozwijaj.

Projekt kalkulatora będziemy jeszcze rozwijać w kolejnym artykule, poprzez jego refaktoryzację tak by bazował na klasach oraz dołożymy do niego kolejne opcje, które między innymi pozwolą na liczenie potęg oraz pierwiastków kwadratowych.

Mam nadzieję, iż lektura Ci się podobała i do zobaczenia w kolejnym artykule!

Idź do oryginalnego materiału