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:
- Ta emot inmatning: *bill_amount*, *tip_percentage*, *number_of_people*.
- Beräkna totala dricksbeloppet: *bill_amount* * *tip_percentage* / 100.
- Dela totala notabeloppet med *number_of_people* för att få varje persons andel av notan.
- Dela totala dricksbeloppet med *number_of_people* för att få varje persons andel av dricksen.
- 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.