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ę, że zapoznałeś się z pierwszym artykułem z serii Pierwsze koty za płoty – Python. Jeśli 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


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śli posiadasz już projekt Sample to możesz go wykorzystać w ramach tego artykułu.
Wyświetlanie tekstu na ekranie
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:
- Dodawanie
- Odejmowanie
- Mnożenie
- Dzielenie
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

Pobieranie danych z okna konsoli oraz konwersja typów
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śli spróbujesz na ekranie konsoli wpisać coś innego niż liczbę, np. słowo Devkot?

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
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„.

Wyjątki możemy rzucać również z kodu, który piszemy. Służy do tego słowo kluczowe 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 kluczowe if inicjuje instrukcję warunkową, która wymaga przekazania warunku logicznego. Jeśli warunek jest spełniony, blok kodu zostanie wykonany. Dodatkowo, słowo kluczowe elif (skrót od else if) może być użyte do dodawania kolejnych warunków. Wreszcie, słowo kluczowe 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 lecz 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 nadal brakuje implementacji dzielenia oraz mnożenia. Spróbuj zaimplementować ich logikę samemu, dzięki temu utrwalisz część materiału zawartego w tym artykule. Jeśli 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ę, że lektura Ci się podobała i do zobaczenia w kolejnym artykule!