Hur man skapar en tips och delad kalkylator i Python

Låt oss lära oss hur man skapar en tips- och delaträknare i Python.

Det är ett fantastiskt personligt projekt att bygga för att öva på dina Python-färdigheter. Dessutom kommer den här handledningen att lära dig hur du skapar applikationen på två sätt, först som ett kommandoradsverktyg och sedan som ett GUI-verktyg.

Förhandsvisning

Vi kommer att bygga applikationen på två sätt. Först kommer vi att bygga ett enkelt Python-skalskript som ber användaren om input och skriver utdata.

För det andra kommer vi att ge programmet ett grafiskt användargränssnitt med hjälp av Tkinter.

Programspecifikation

Programmet får tre ingångar:

  • Fakturans belopp
  • Dricksprocenten
  • Antalet personer som delar räkningen

Med hjälp av dessa ingångar kommer programmet att beräkna följande utdata:

  • Varje persons bidrag till notan
  • Varje persons bidrag till tipset
  • Varje persons totala bidrag

Algoritm

För att uppnå detta följer tip- och delaträknaren en mycket enkel algoritm som beskrivs nedan:

  • Ta emot indata: bill_amount, tip_percentage, number_of_people
  • Beräkna dricksbeloppet genom att multiplicera bill_amount * tip_procent / 100
  • Dela fakturabeloppet med antal_personer för att få varje persons bidrag till notan.
  • Dela dricksbeloppet med antal_personer för att få varje persons bidrag till tipset.
  • Lägg slutligen till bidragen till notan och tipset för att få det totala beloppet som ska betalas.
  • Förutsättningar

    För att följa denna handledning bör du känna till och förstå programmeringsspråket Python. För denna handledning krävs kunskap om grundläggande begrepp, inklusive funktioner och klasser.

    Dessutom bör du ha Python installerat i ditt system. Om det inte är det, gå till Python-webbplatsen och ladda ner den. Alternativt har adminvista.com en online Python-kompilator där du kan köra din Python-kod i webbläsaren utan någon miljöinstallation alls.

    Bygga räknaren med ett kommandoradsgränssnitt

    Skapa en projektmapp

    Börja med att navigera till en tom mapp i ditt system. I mitt fall använder jag Ubuntu 22.04, så för att skapa en mapp och navigera till den med terminalen; Jag måste ange följande kommando:

    mkdir tip-calculator && cd tip-calculator

    Skapa Python-filen

    Skapa sedan skriptfilen där vi ska skriva Python-skriptet. I mitt fall kommer jag att använda pekkommandot för att göra det:

    touch main.py

    Öppna skriptfilen med din favoritkodredigerare

    För att börja skriva koden till skriptet, öppna filen med din favoritkodredigerare. Jag kommer att använda nano som är en terminalbaserad textredigerare.

    nano main.py

    Ta emot ingången

    Med detta gjort kan vi lägga till följande kodrader överst i filen:

    # 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: "))

    I grund och botten tar detta emot indata och kastar datatypen för varje ingång från en sträng till den mest lämpliga typen.

    Beräkna dricksbeloppet

    Därefter beräknar vi dricksbeloppet genom att multiplicera dricksprocenten med räkningsbeloppet.

    tip_amount = bill_amount * tip_percentage / 100

    Dela räkningen och dricks för att få varje persons bidrag till de två

    # 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

    Beräkna det totala bidraget

    Lägg sedan till de individuella bidragen för att fastställa det totala bidraget per person.

    total_contribution = bill_contribution + tip_contribution

    Visa resultaten

    Slutligen, mata ut resultaten till användaren.

    # Displayinnng the results
    print("Bill contribution per person: ", bill_contribution)
    print("Tip contribution per person: ", tip_contribution)
    print("Total contribution per person: ", total_contribution)

    Testa tip- och deladräknaren

    Slutligen bör din skriptfil se ut så här:

    # 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)

    Vid det här laget är du välkommen att testköra din applikation med följande kommando:

    python3 main.py

    Bygga tips och delad kalkylator med GUI

    I nästa del av denna handledning kommer vi att implementera samma applikation men med ett grafiskt användargränssnitt. För att bygga GUI kommer vi att använda ett paket som heter Tkinter.

    Installation

    Tkinter är ett paket inbyggt i Pythons standardbibliotek. Det betyder att den installerades som standard när du installerade Python.

    På Linux-maskiner med Python installerat som standard är TKinter dock inte förinstallerat för att spara utrymme. Därför måste du installera det manuellt med följande kommando:

    sudo apt-get install python3-tk

    Skapa en projektfil

    Börja med att skapa en fil där Python-skriptet kommer att lagras. När du har skapat filen öppnar du den med önskad textredigerare.

    touch gui.py

    Importera Tkinter

    Importera sedan Tkinter-paketet genom att lägga till följande rad överst i filen.

    import tkinter from tk

    Skapa användargränssnittet

    Sedan kan vi börja skapa användargränssnittet.

    # 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")

    Ovanstående kod skapade ett fönster som innehåller alla användargränssnittswidgets. Dessutom skapade den en etikett som kommer att fungera som fönstrets titel.

    Därefter skapade den etiketter och inmatningsfält för de tre ingångarna: bill_amount, tip_procent och number_of_people. Slutligen skapades en knapp som användaren klickar på för att köra beräkningen.

    Skapa en funktion för att beräkna utdata

    Efter detta kan vi skapa en funktion för att hantera klickningen på Enter-knappen. Den här funktionen tar värdena för inmatningsfälten och använder dem för att beräkna utdata med den algoritm som nämnts tidigare. Slutligen kommer det att skapa en etikett för att visa utdata och uppdatera fönstret.

    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()

    Koden i ovanstående funktion har förklarats genom kommentarer som förklarar varje större steg.

    Fästa händelsehanteraren på knappen

    Därefter binder vi händelsehanteraren till knappen klickhändelse. Knappklickshändelsen i Tkinter representeras av strängen ’’. För att binda händelsen till händelsehanteraren använder vi bindningsmetoden för knappen. Lägg till denna kodrad under funktionsdefinitionen:

    btn_enter.bind('<Button-1>', handle_click)
    btn_enter.pack()

    Slutligen, för att hålla fönstret igång, anropar vi mainloop-metoden för fönsterobjektet.

    window.mainloop()

    Och vi är klara!

    Testa tip- och deladräknaren

    Du kan köra programmet med följande kommando:

    python3 gui.py

    Detta bör öppna fönstret enligt följande:

    Du kan köra räknaren med exempelinmatning:

    Slutord

    I den här handledningen skapade vi en tips- och deladräknare på två sätt. Den första använder ett terminalbaserat CLI-verktyg. Det andra är ett GUI-verktyg som använder Pythons Tkinter. Denna handledning visar hur man bygger ett enkelt Python-projekt. Om du behöver fräscha upp eller putsa dina Python-kunskaper, här är en Datacamp-kurs.

    Därefter kan du kolla in hur du skapar en slumpmässig lösenordsgenerator i Python.