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

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:

  • Pobierz dane wejściowe: kwota_rachunku, procent_napiwku, liczba_osób
  • Oblicz kwotę napiwku: kwota_rachunku * procent_napiwku / 100
  • Oblicz wkład każdej osoby do rachunku: kwota_rachunku / liczba_osób
  • Oblicz wkład każdej osoby do napiwku: kwota_napiwku / liczba_osób
  • Oblicz całkowity wkład każdej osoby: wkład_do_rachunku + wkład_do_napiwku
  • 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.