Odkryjmy, jak stworzyć kalkulator napiwków i podziału rachunku w języku Python.
Jest to znakomity projekt, który pozwoli Ci udoskonalić umiejętności programowania w Pythonie. Ponadto, ten poradnik pokaże Ci, jak zbudować aplikację na dwa sposoby: najpierw jako narzędzie w wierszu poleceń, a następnie jako aplikację z graficznym interfejsem użytkownika (GUI).
Zajawka
Aplikację skonstruujemy na dwa różne sposoby. Na początku stworzymy prosty skrypt Pythona, który będzie pobierał dane od użytkownika i wyświetlał wyniki.
W drugiej kolejności, wyposażymy nasz program w graficzny interfejs użytkownika za pomocą biblioteki Tkinter.
Specyfikacja programu
Program będzie przyjmował trzy dane wejściowe:
- Wartość rachunku
- Procent napiwku
- Liczbę osób dzielących rachunek
Na podstawie tych danych, program obliczy i wyświetli następujące wyniki:
- Kwotę, jaką każda osoba powinna zapłacić za rachunek
- Wysokość napiwku przypadającą na każdą osobę
- Całkowity wkład każdej osoby (rachunek + napiwek)
Algorytm
Kalkulator napiwków i podziału rachunku będzie działał w oparciu o następujący algorytm:
Wymagania wstępne
Aby móc skorzystać z tego poradnika, powinieneś posiadać podstawową wiedzę o języku Python. W szczególności, powinieneś rozumieć fundamentalne koncepcje takie jak funkcje i klasy.
Dodatkowo, na Twoim komputerze powinien być zainstalowany interpreter Pythona. Jeżeli go nie masz, odwiedź oficjalną stronę Pythona i pobierz go. Alternatywnie, newsblog.pl udostępnia kompilator Pythona online, gdzie możesz uruchamiać kod Pythona bezpośrednio w przeglądarce, bez konieczności konfiguracji środowiska.
Budowanie kalkulatora z interfejsem wiersza poleceń
Utwórz folder projektu
Na początek, utwórz pusty folder w swoim systemie. W moim przypadku używam Ubuntu 22.04, więc aby utworzyć folder i przejść do niego za pomocą terminala, wpisuję następujące polecenie:
mkdir tip-calculator && cd tip-calculator
Utwórz plik Pythona
Następnie, utwórz plik skryptu, w którym będziemy pisać kod Pythona. Ja użyję do tego celu polecenia touch:
touch main.py
Otwórz plik skryptu za pomocą ulubionego edytora kodu
Aby zacząć pisać kod, otwórz plik w swoim preferowanym edytorze. Ja zamierzam użyć nano, który jest edytorem tekstowym działającym w terminalu.
nano main.py
Pobierz dane wejściowe
Po wykonaniu tych kroków, możemy dodać następujące linie kodu na początku pliku:
# Pobranie kwoty rachunku jako liczby zmiennoprzecinkowej bill_amount = float(input("Kwota rachunku: ")) # Pobranie procentu napiwku jako liczby zmiennoprzecinkowej tip_percentage = float(input("Procent napiwku: ")) # Pobranie liczby osób jako liczby całkowitej number_of_people = int(input("Liczba osób: "))
Powyższy kod pobiera dane wejściowe od użytkownika i konwertuje je do odpowiednich typów danych.
Oblicz kwotę napiwku
Następnie obliczamy kwotę napiwku, mnożąc kwotę rachunku przez procent napiwku.
tip_amount = bill_amount * tip_percentage / 100
Podziel rachunek i napiwek, aby uzyskać wkład każdej osoby
# Obliczenie wkładu każdej osoby do rachunku bill_contribution = bill_amount / number_of_people # Obliczenie wkładu każdej osoby do napiwku tip_contribution = tip_amount / number_of_people
Oblicz całkowity wkład
Teraz dodajemy do siebie oba wkłady, aby uzyskać całkowitą kwotę na osobę.
total_contribution = bill_contribution + tip_contribution
Wyświetl wyniki
Na koniec wyświetlamy wyniki dla użytkownika.
# Wyświetlenie wyników print("Wkład do rachunku na osobę: ", bill_contribution) print("Wkład do napiwku na osobę: ", tip_contribution) print("Całkowity wkład na osobę: ", total_contribution)
Testowanie kalkulatora napiwków i podziału
Ostatecznie plik skryptu powinien wyglądać następująco:
# Pobranie kwoty rachunku jako liczby zmiennoprzecinkowej bill_amount = float(input("Kwota rachunku: ")) # Pobranie procentu napiwku jako liczby zmiennoprzecinkowej tip_percentage = float(input("Procent napiwku: ")) # Pobranie liczby osób jako liczby całkowitej number_of_people = int(input("Liczba osób: ")) tip_amount = bill_amount * tip_percentage / 100 # Obliczenie wkładu każdej osoby do rachunku bill_contribution = bill_amount / number_of_people # Obliczenie wkładu każdej osoby do napiwku tip_contribution = tip_amount / number_of_people total_contribution = bill_contribution + tip_contribution # Wyświetlenie wyników print("Wkład do rachunku na osobę: ", bill_contribution) print("Wkład do napiwku na osobę: ", tip_contribution) print("Całkowity wkład na osobę: ", total_contribution)
W tym momencie możesz przetestować swoją aplikację, wpisując w terminalu następujące polecenie:
python3 main.py
Tworzenie kalkulatora napiwków i podziału z graficznym interfejsem użytkownika
W następnej części tego tutorialu zaimplementujemy tę samą aplikację, ale z interfejsem graficznym. Do stworzenia GUI użyjemy pakietu o nazwie Tkinter.
Konfiguracja
Tkinter jest pakietem wbudowanym w standardową bibliotekę Pythona, co oznacza, że został zainstalowany domyślnie razem z Pythonem.
Jednak na systemach Linux, gdzie Python jest preinstalowany, Tkinter nie jest domyślnie dodawany, aby zaoszczędzić miejsce. Dlatego konieczne jest jego ręczne zainstalowanie za pomocą następującego polecenia:
sudo apt-get install python3-tk
Utwórz plik projektu
Na początku utwórz plik, w którym umieścisz kod Pythona. Po utworzeniu pliku, otwórz go w preferowanym edytorze tekstu.
touch gui.py
Importuj Tkintera
Następnie, zaimportuj bibliotekę Tkinter, dodając następujący wiersz na początku pliku.
import tkinter as tk
Utwórz interfejs użytkownika
Teraz możemy przejść do tworzenia interfejsu użytkownika.
# Utworzenie okna window = tk.Tk() # Utworzenie tytułu okna tk.Label(text="Kalkulator Napiwków i Podziału").pack() # Utworzenie pola do wprowadzania kwoty rachunku tk.Label(text="Wprowadź kwotę rachunku").pack() ent_bill = tk.Entry(width=40) ent_bill.pack() # Utworzenie pola do wprowadzania procentu napiwku tk.Label(text="Wprowadź procent napiwku").pack() ent_tip = tk.Entry(width=40) ent_tip.pack() # Utworzenie pola do wprowadzania liczby osób tk.Label(text="Wprowadź liczbę osób").pack() ent_people = tk.Entry(width=40) ent_people.pack() # Utworzenie przycisku "Oblicz" btn_enter = tk.Button(text="Oblicz")
Powyższy kod stworzył okno, w którym znajdują się wszystkie elementy interfejsu użytkownika. Dodatkowo, stworzyliśmy etykietę, która będzie służyć jako tytuł okna.
Następnie, utworzyliśmy etykiety i pola do wprowadzania danych dla trzech wartości wejściowych: kwoty rachunku, procentu napiwku i liczby osób. Na końcu, utworzyliśmy przycisk, który użytkownik kliknie, aby wywołać obliczenia.
Utwórz funkcję do obliczania wyników
Teraz możemy stworzyć funkcję, która będzie obsługiwać kliknięcie przycisku „Oblicz”. Ta funkcja pobierze wartości z pól wejściowych i wykorzysta je do obliczenia wyników, zgodnie z wcześniej omówionym algorytmem. Na końcu, utworzy etykietę, aby wyświetlić wyniki i zaktualizować okno.
def handle_click(event): # Pobranie wartości z pól wejściowych przy użyciu metody get() # Konwersja danych ze stringów na odpowiednie typy bill_amount = float(ent_bill.get()) tip_percentage = float(ent_tip.get()) number_of_people = int(ent_people.get()) # Obliczenie kwoty napiwku tip_amount = bill_amount * tip_percentage / 100 # Obliczenie wkładu każdej osoby do rachunku bill_contribution = bill_amount / number_of_people # Obliczenie wkładu każdej osoby do napiwku tip_contribution = tip_amount / number_of_people # Obliczenie całkowitego wkładu każdej osoby total_contribution = bill_contribution + tip_contribution # Utworzenie stringa z wynikami output = f'Rachunek na osobę: {bill_contribution:.2f} zł\nNapiwek na osobę: {tip_contribution:.2f} zł\nRazem na osobę: {total_contribution:.2f} zł' # Utworzenie etykiety do wyświetlenia wyników tk.Label(text=output).pack() # Aktualizacja okna, aby odzwierciedlić zmiany window.update()
Kod powyższej funkcji został szczegółowo opisany za pomocą komentarzy.
Dołącz program obsługi zdarzeń do przycisku
Teraz musimy powiązać funkcję obsługi zdarzeń z kliknięciem przycisku. Zdarzenie kliknięcia przycisku w Tkinter reprezentowane jest przez string „<Button-1>”. Aby powiązać zdarzenie z funkcją obsługi, używamy metody `bind()` przycisku. Dodaj ten wiersz kodu poniżej definicji funkcji:
btn_enter.bind('<Button-1>', handle_click) btn_enter.pack()
Na koniec, aby okno działało, wywołujemy metodę `mainloop()` obiektu okna.
window.mainloop()
I gotowe!
Testowanie kalkulatora napiwków i podziału
Możesz uruchomić aplikację za pomocą następującego polecenia:
python3 gui.py
Powinno otworzyć się okno w następujący sposób:
Możesz przetestować kalkulator, wprowadzając przykładowe dane:
Podsumowanie
W tym tutorialu stworzyliśmy kalkulator napiwków i podziału rachunku na dwa sposoby. Pierwszy z nich wykorzystuje narzędzie wiersza poleceń, a drugi – graficzny interfejs użytkownika z wykorzystaniem biblioteki Tkinter. Ten poradnik pokazał, jak zbudować prosty projekt w języku Python. Jeżeli chcesz odświeżyć lub udoskonalić swoje umiejętności w Pythonie, polecam kurs Datacamp.
Możesz również sprawdzić, jak stworzyć generator losowych haseł w Pythonie.