Hur man skapar en tips och delad kalkylator i Python

By rik

Låt oss utforska hur du skapar en kalkylator för dricks och delning av nota i Python.

Detta är ett utmärkt projekt för att finslipa dina Python-kunskaper. Dessutom kommer denna handledning att demonstrera hur du utvecklar applikationen på två sätt: först som ett verktyg för kommandoraden och sedan som ett program med grafiskt användargränssnitt (GUI).

Förhandstitt

Vi kommer att konstruera applikationen med två olika metoder. Inledningsvis bygger vi ett enkelt Python-skalskript som begär inmatning från användaren och visar resultatet.

Därefter ger vi programmet ett visuellt användargränssnitt med hjälp av Tkinter.

Programspecifikation

Programmet tar emot tre inmatningar:

  • Notans totala belopp
  • Dricksprocenten
  • Antalet personer som delar på notan

Med hjälp av dessa inmatningar kommer programmet att beräkna och visa följande:

  • Varje persons andel av notan
  • Varje persons andel av dricksen
  • Varje persons totala belopp att betala

Algoritm

För att uppnå detta följer dricks- och delningskalkylatorn en okomplicerad algoritm, vilken beskrivs nedan:

  1. Ta emot inmatning: *bill_amount*, *tip_percentage*, *number_of_people*.
  2. Beräkna totala dricksbeloppet: *bill_amount* * *tip_percentage* / 100.
  3. Dela totala notabeloppet med *number_of_people* för att få varje persons andel av notan.
  4. Dela totala dricksbeloppet med *number_of_people* för att få varje persons andel av dricksen.
  5. Summera andelarna av notan och dricksen för att få det totala beloppet varje person ska betala.

Förutsättningar

För att följa denna handledning bör du ha en grundläggande förståelse för programmeringsspråket Python. För denna genomgång krävs kunskap om grundläggande koncept, som funktioner och klasser.

Du bör även ha Python installerat på din dator. Om inte, besök Pythons officiella webbplats och ladda ner det. Alternativt finns det en online Python-kompilator på adminvista.com där du kan köra din Python-kod direkt i webbläsaren utan att behöva installera något.

Skapa räknaren med kommandoradsgränssnitt

Skapa en projektmapp

Börja med att navigera till en tom mapp i ditt filsystem. I mitt fall, där jag använder Ubuntu 22.04, skapar jag en mapp och navigerar till den via terminalen med följande kommando:

mkdir tip-calculator && cd tip-calculator

Skapa Python-filen

Skapa sedan skriptfilen där vi kommer att skriva Python-koden. Jag använder kommandot ”touch” för detta:

touch main.py

Öppna skriptfilen med din favoritkodredigerare

För att starta skrivandet av koden, öppna filen med din föredragna kodredigerare. Jag kommer att använda nano, en terminalbaserad textredigerare.

nano main.py

Ta emot inmatningen

När detta är gjort kan vi lägga till följande rader i början av filen:

# Tar emot notabeloppet som ett flyttal
bill_amount = float(input("Notans belopp: "))

# Tar emot dricksprocenten som ett flyttal
tip_percentage = float(input("Dricksprocent: "))

# Tar emot antalet personer som ett heltal
number_of_people = int(input("Antal personer: "))

I grund och botten hämtar detta inmatningen och omvandlar datatypen för varje inmatning från en sträng till den lämpligaste typen.

Beräkna dricksbeloppet

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

tip_amount = bill_amount * tip_percentage / 100

Dela notan och dricksen för att få varje persons andel

# Beräknar varje persons andel av notan
bill_contribution = bill_amount / number_of_people

# Beräknar varje persons andel av dricksen
tip_contribution = tip_amount / number_of_people

Beräkna den totala andelen

Sedan summerar vi de individuella andelarna för att få fram det totala beloppet per person.

total_contribution = bill_contribution + tip_contribution

Visa resultaten

Slutligen, visar vi resultaten för användaren.

# Visar resultaten
print("Notans andel per person: ", bill_contribution)
print("Dricksens andel per person: ", tip_contribution)
print("Total andel per person: ", total_contribution)

Testa dricks- och delningskalkylatorn

Nu ska din skriptfil se ut så här:

# Tar emot notabeloppet som ett flyttal
bill_amount = float(input("Notans belopp: "))

# Tar emot dricksprocenten som ett flyttal
tip_percentage = float(input("Dricksprocent: "))

# Tar emot antalet personer som ett heltal
number_of_people = int(input("Antal personer: "))

tip_amount = bill_amount * tip_percentage / 100

# Beräknar varje persons andel av notan
bill_contribution = bill_amount / number_of_people

# Beräknar varje persons andel av dricksen
tip_contribution = tip_amount / number_of_people

total_contribution = bill_contribution + tip_contribution

# Visar resultaten
print("Notans andel per person: ", bill_contribution)
print("Dricksens andel per person: ", tip_contribution)
print("Total andel per person: ", total_contribution)

Du kan nu köra din applikation med följande kommando:

python3 main.py

Skapa en dricks- och delningskalkylator 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 skapa GUI kommer vi att använda ett paket som heter Tkinter.

Installation

Tkinter är ett paket som är inbyggt i Pythons standardbibliotek. Det betyder att det installeras som standard när du installerar Python.

På Linux-datorer 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, öppna den med din föredragna textredigerare.

touch gui.py

Importera Tkinter

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

import tkinter as tk

Skapa användargränssnittet

Därefter kan vi börja skapa själva användargränssnittet.

# Skapar fönstret
window = tk.Tk()

# Skapar fönstertiteln
tk.Label(text="Dricks- och delningskalkylator").pack()

# Skapar ett inmatningsfält för notabeloppet
tk.Label(text="Ange notabelopp").pack()
ent_bill = tk.Entry(width=40)
ent_bill.pack()

# Skapar ett inmatningsfält för dricksprocenten
tk.Label(text="Ange dricksprocent").pack()
ent_tip = tk.Entry(width=40)
ent_tip.pack()

# Skapar ett inmatningsfält för antalet personer
tk.Label(text="Ange antalet personer").pack()
ent_people = tk.Entry(width=40)
ent_people.pack()

# Skapar Enter-knappen
btn_enter = tk.Button(text="Enter")

Ovanstående kod skapade ett fönster som innehåller alla GUI-element. Dessutom skapades en etikett som fungerar som fönstrets titel.

Därefter skapades etiketter och inmatningsfält för de tre inmatningarna: *bill_amount*, *tip_percentage* och *number_of_people*. Slutligen skapades en knapp som användaren kan klicka på för att initiera beräkningen.

Skapa en funktion för att beräkna utmatningarna

Efter detta kan vi skapa en funktion för att hantera klick på Enter-knappen. Denna funktion tar värdena från inmatningsfälten och använder dem för att beräkna utdata med den algoritm som beskrivs tidigare. Slutligen skapar den en etikett för att visa resultaten och uppdaterar fönstret.

def handle_click(event):
    # Hämtar inmatningsvärdena från inmatningsfälten med metoden get
    # Omvandlar även inmatningarna från standard sträng datatypen
    bill_amount = float(ent_bill.get())
    tip_percentage = float(ent_tip.get())
    number_of_people = int(ent_people.get())
    
    # Beräknar totala dricksbeloppet
    tip_amount = bill_amount * tip_percentage / 100
    
    # Beräknar varje persons andel av notan
    bill_contribution = bill_amount / number_of_people

    # Beräknar varje persons andel av dricksen
    tip_contribution = tip_amount / number_of_people

    # Beräknar varje persons totala belopp
    total_contribution = bill_contribution + tip_contribution

    # Skapar utmatningssträngen
    output = f'Notan per person: {bill_contribution} \n Dricks per person: {tip_contribution} \n Totalt per person: {total_contribution}'
    
    # Skapar en etikett för utmatningstexten
    tk.Label(text=output).pack()

    # Uppdaterar fönstret för att reflektera UI-ändringarna
    window.update()

Koden i ovanstående funktion är förklarad i kommentarerna.

Koppla händelsehanteraren till knappen

Därefter kopplar vi händelsehanteraren till knappens klickhändelse. Knappens klickhändelse i Tkinter representeras av strängen ’<Button-1>’. För att koppla händelsen till händelsehanteraren använder vi knappens bindningsmetod. 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 metoden *mainloop* för fönsterobjektet.

window.mainloop()

Och nu är vi klara!

Testa dricks- och delningskalkylatorn

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

python3 gui.py

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

Du kan testa räknaren med exempelinmatning:

Avslutande ord

I denna handledning har vi skapat en dricks- och delningskalkylator på två sätt. Det första är ett terminalbaserat CLI-verktyg och det andra är ett GUI-verktyg som använder Pythons Tkinter. Denna handledning visar hur man skapar ett enkelt Python-projekt. Om du behöver fräscha upp eller putsa dina Python-kunskaper, finns det en Datacamp-kurs som kan vara till hjälp.

Du kan även utforska hur man skapar en slumpmässig lösenordsgenerator i Python.