Jak stworzyć kalkulator napiwków i podziałów w Pythonie
Opublikowany: 2023-01-06Nauczmy się, jak utworzyć kalkulator Tip and Split w Pythonie.
To świetny osobisty projekt do zbudowania, aby ćwiczyć swoje umiejętności w języku Python. Ponadto ten samouczek nauczy Cię, jak utworzyć aplikację na dwa sposoby, najpierw jako narzędzie wiersza polecenia, a następnie jako narzędzie GUI.
Zapowiedź
Aplikację będziemy budować na dwa sposoby. Najpierw zbudujemy prosty skrypt powłoki Pythona, który prosi użytkownika o wprowadzenie danych i zapisuje dane wyjściowe.
Po drugie, damy programowi graficzny interfejs użytkownika za pomocą Tkintera.
Specyfikacja programu
Program otrzymuje trzy wejścia:
- Kwota rachunku
- Procent napiwków
- Liczba osób dzielących rachunek
Korzystając z tych danych wejściowych, program obliczy następujące dane wyjściowe:
- Wkład każdej osoby do rachunku
- Wkład każdej osoby do napiwku
- Całkowity wkład każdej osoby
Algorytm
Aby to osiągnąć, kalkulator napiwków i podziałów będzie działał zgodnie z bardzo prostym algorytmem opisanym poniżej:
- Odbierz dane wejściowe
: bill_amount
,tip_percentage
,number_of_people
- Oblicz
amount
napiwku, mnożącbill_amount
*tip_percentage / 100
- Podziel
bill_amount
przeznumber_of_people
, aby uzyskać udział każdej osoby w rachunku. - Podziel kwotę
number_of_people
przeztip_amount
, aby uzyskać wkład każdej osoby w napiwek. - Na koniec dodaj składki do rachunku i napiwek, aby uzyskać całkowitą kwotę do zapłaty.
Wymagania wstępne
Aby postępować zgodnie z tym samouczkiem, powinieneś znać i rozumieć język programowania Python. W przypadku tego samouczka wymagana jest znajomość podstawowych pojęć, w tym funkcji i klas.
Ponadto powinieneś mieć zainstalowany Python w swoim systemie. Jeśli tak nie jest, przejdź do witryny Pythona i pobierz ją. Alternatywnie, Geekflare ma internetowy kompilator Pythona, w którym możesz uruchomić swój kod Pythona w przeglądarce bez żadnej konfiguracji środowiska.
Budowanie kalkulatora z interfejsem wiersza poleceń
Utwórz folder projektu
Aby rozpocząć, przejdź do pustego folderu w systemie. W moim przypadku używam Ubuntu 22.04, więc aby utworzyć folder i przejść do niego za pomocą terminala; Muszę wprowadzić następujące polecenie:
mkdir tip-calculator && cd tip-calculator
Utwórz plik Pythona
Następnie utwórz plik skryptu, w którym napiszemy skrypt Pythona. W moim przypadku użyję do tego polecenia touch
:
touch main.py
Otwórz plik skryptu za pomocą swojego ulubionego edytora kodu
Aby rozpocząć wpisywanie kodu do skryptu, otwórz plik w swoim ulubionym edytorze kodu. Zamierzam używać nano
, który jest edytorem tekstu opartym na terminalu.
nano main.py
Odbierz dane wejściowe
Po wykonaniu tej czynności możemy dodać następujące wiersze kodu na początku pliku:
# Receiving input for bill amount as a floating point number bill_amount = float(input("Bill amount: ")) # Receiving input for the tip percentage as a floating point number tip_percentage = float(input("Tip percentage: ")) # Receiving the input for the number of people as an integer number_of_people = int(input("Number of people: "))
Zasadniczo odbiera dane wejściowe i rzutuje typ danych każdego wejścia z łańcucha na najbardziej odpowiedni typ.
Oblicz kwotę napiwku
Następnie obliczamy kwotę napiwku, mnożąc procent napiwku przez kwotę rachunku.
tip_amount = bill_amount * tip_percentage / 100
Podziel rachunek i napiwek, aby uzyskać wkład każdej osoby do dwóch
# Calculating each person's bill contribution bill_contribution = bill_amount / number_of_people # Calculating each person's tip contribution tip_contribution = tip_amount / number_of_people
Oblicz całkowity wkład
Następnie dodaj poszczególne składki, aby określić całkowity wkład na osobę.
total_contribution = bill_contribution + tip_contribution
Wyświetl wyniki
Na koniec wyślij wyniki do użytkownika.
# Displayinnng the results print("Bill contribution per person: ", bill_contribution) print("Tip contribution per person: ", tip_contribution) print("Total contribution per person: ", total_contribution)
Testowanie kalkulatora napiwków i podziałów
Ostatecznie plik skryptu powinien wyglądać tak:
# Receiving input for bill amount as a floating point number bill_amount = float(input("Bill amount: ")) # Receiving input for the tip percentage as a floating point number tip_percentage = float(input("Tip percentage: ")) # Receiving the input for the number of people as an integer number_of_people = int(input("Number of people: ")) tip_amount = bill_amount * tip_percentage / 100 # Calculating each person's bill contribution bill_contribution = bill_amount / number_of_people # Calculating each person's tip contribution tip_contribution = tip_amount / number_of_people total_contribution = bill_contribution + tip_contribution # Displaying the results print("Bill contribution per person: ", bill_contribution) print("Tip contribution per person: ", tip_contribution) print("Total contribution per person: ", total_contribution)
W tym momencie możesz przetestować swoją aplikację za pomocą następującego polecenia:
python3 main.py
Tworzenie kalkulatora napiwków i podziałów z graficznym interfejsem użytkownika
W następnej części tego samouczka zaimplementujemy tę samą aplikację, ale z graficznym interfejsem użytkownika. Do zbudowania GUI użyjemy pakietu o nazwie Tkinter.
Konfigurowanie
Tkinter to pakiet wbudowany w standardową bibliotekę Pythona. Oznacza to, że został zainstalowany domyślnie podczas instalacji Pythona.
Jednak na komputerach z systemem Linux z domyślnie zainstalowanym Pythonem TKinter nie jest preinstalowany, aby zaoszczędzić miejsce. Dlatego musisz zainstalować go ręcznie za pomocą następującego polecenia:
sudo apt-get install python3-tk
Utwórz plik projektu
Aby rozpocząć, utwórz plik, w którym będzie przechowywany skrypt Pythona. Po utworzeniu pliku otwórz go w preferowanym edytorze tekstu.
touch gui.py
Importuj Tkintera
Następnie zaimportuj pakiet Tkinter, dodając następujący wiersz na początku pliku.
import tkinter from tk
Utwórz interfejs użytkownika
Następnie możemy przystąpić do tworzenia interfejsu użytkownika.
# Creating the window window = tk.Tk() # Creating the Window title tk.Label(text="Tip and Split Calculator").pack() # Create an input field tk.Label(text="Enter bill amount").pack() ent_bill = tk.Entry(width=40) ent_bill.pack() # Create and entry for the tip percentage tk.Label(text="Enter tip percentage").pack() ent_tip = tk.Entry(width=40) ent_tip.pack() # Create an entry for the number of people tk.Label(text="Enter the number of people").pack() ent_people = tk.Entry(width=40) ent_people.pack() # Create the Enter button btn_enter = tk.Button(text="Enter")
Powyższy kod utworzył okno zawierające wszystkie widżety interfejsu użytkownika. Ponadto stworzył etykietę, która będzie służyć jako tytuł okna.
Następnie utworzył etykiety i pola wprowadzania dla trzech danych wejściowych: bill_amount
, tip_percentage
i number_of_people
. Na koniec utworzono przycisk, który użytkownik kliknie, aby uruchomić obliczenia.
Utwórz funkcję do obliczania wyników
Następnie możemy utworzyć funkcję obsługującą kliknięcie przycisku Enter. Ta funkcja pobierze wartości pól wejściowych i użyje ich do obliczenia danych wyjściowych przy użyciu algorytmu wspomnianego wcześniej. Na koniec utworzy etykietę, aby wyświetlić dane wyjściowe i zaktualizować okno.
def handle_click(event): # Collecting the inputs from the entry fields using the get method # Also type casting the inputs from the default string data type bill_amount = float(ent_bill.get()) tip_percentage = float(ent_tip.get()) number_of_people = int(ent_people.get()) # Calcuating the amount to be paid as a tip tip_amount = bill_amount * tip_percentage / 100 # Calculating the bill contribution of each person at the table bill_contribution = bill_amount / number_of_people # Calculating the tip contribution of each person at the table tip_contribution = tip_amount / number_of_people # Calculating the total contribution of each person total_contribution = bill_contribution + tip_contribution # Creating the output string output = f'Bill per person: {bill_contribution} \n Tip per person: {tip_contribution} \n Total per person: {total_contribution}' # Creating a label for the output text tk.Label(text=output).pack() # Updating the window to reflect the UI changes window.update()
Kod w powyższej funkcji został wyjaśniony za pomocą komentarzy wyjaśniających każdy główny krok.
Dołączanie programu obsługi zdarzeń do przycisku
Następnie wiążemy procedurę obsługi zdarzenia ze zdarzeniem kliknięcia przycisku. Zdarzenie kliknięcia przycisku w Tkinter jest reprezentowane przez ciąg znaków „ <Button-1>
”. Aby powiązać zdarzenie z procedurą obsługi zdarzeń, używamy metody wiązania przycisku. Dodaj ten wiersz kodu pod definicją funkcji:
btn_enter.bind('<Button-1>', handle_click) btn_enter.pack()
Na koniec, aby okno działało, wywołujemy metodę mainloop
obiektu window
.
window.mainloop()
I skończyliśmy!
Testowanie kalkulatora napiwków i podziałów
Możesz uruchomić aplikację za pomocą następującego polecenia:
python3 gui.py
To powinno otworzyć okno w następujący sposób:
Możesz uruchomić kalkulator z przykładowymi danymi wejściowymi:
Ostatnie słowa
W tym samouczku utworzyliśmy kalkulator napiwków i podziałów na dwa sposoby. Pierwszy wykorzystuje narzędzie CLI oparte na terminalu. Drugi to narzędzie GUI wykorzystujące Tkinter Pythona. W tym samouczku pokazano, jak zbudować prosty projekt w języku Python. Jeśli chcesz odświeżyć lub doszlifować swoje umiejętności w zakresie Pythona, oto kurs Datacamp.
Następnie możesz sprawdzić, jak utworzyć generator losowych haseł w Pythonie.