Jak stworzyć kalkulator napiwków i podziałów w Pythonie

Nauczmy 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: kwota_rachunku, procent_napiwku, liczba_osób
  • Oblicz kwotę napiwku, mnożąc kwotę_rachunku * procent_napiwku / 100
  • Podziel kwotę_rachunku przez liczbę_osób, aby uzyskać udział każdej osoby w rachunku.
  • Podziel kwotę napiwku przez liczbę_osób, 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, newsblog.pl 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 utworzono etykiety i pola wprowadzania dla trzech danych wejściowych: kwota_rachunku, procent_napiwków i liczba_osób. 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 „”. 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 okna.

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