Hvordan lage en tips- og delkalkulator i Python

La oss lære hvordan du lager en tips- og delkalkulator i Python.

Det er et flott personlig prosjekt å bygge for å øve på Python-ferdighetene dine. Videre vil denne opplæringen lære deg hvordan du lager applikasjonen på to måter, først som et kommandolinjeverktøy og for det andre som et GUI-verktøy.

Forhåndsvisning

Vi skal bygge applikasjonen på to måter. Først skal vi bygge et enkelt Python-skallskript som ber brukeren om inndata og skriver utdataene.

For det andre vil vi gi programmet et grafisk brukergrensesnitt ved hjelp av Tkinter.

Programspesifikasjon

Programmet mottar tre innganger:

  • Regningsbeløpet
  • Tippingsprosenten
  • Antall personer som deler regningen

Ved å bruke disse inngangene vil programmet beregne følgende utdata:

  • Hver persons bidrag til regningen
  • Hver persons bidrag til tipset
  • Hver persons totale bidrag

Algoritme

For å oppnå dette vil tip- og delkalkulatoren følge en veldig enkel algoritme skissert nedenfor:

  • Motta inndataene: bill_amount, tip_percentage, number_of_people
  • Beregn tipsbeløpet ved å multiplisere bill_amount * tip_prosent / 100
  • Del regningsbeløpet på antall_personer for å få hver persons bidrag til regningen.
  • Del tipsbeløpet på antall_personer for å få hver persons bidrag til tipset.
  • Til slutt legger du til bidragene til regningen og tipset for å få det totale beløpet som skal betales.
  • Forutsetninger

    For å følge denne opplæringen bør du kjenne og forstå Python-programmeringsspråket. For denne opplæringen kreves kunnskap om grunnleggende konsepter, inkludert funksjoner og klasser.

      Hvordan og når du tømmer WordPress-bufferen

    I tillegg bør du ha Python installert i systemet ditt. Hvis det ikke er det, gå over til Python-nettstedet og last det ned. Alternativt har tipsbilk.net en online Python-kompilator der du kan kjøre Python-koden i nettleseren uten noe miljøoppsett i det hele tatt.

    Bygge kalkulatoren med et kommandolinjegrensesnitt

    Opprett en prosjektmappe

    For å begynne, naviger til en tom mappe i systemet. I mitt tilfelle bruker jeg Ubuntu 22.04, så for å lage en mappe og navigere til den ved å bruke terminalen; Jeg må skrive inn følgende kommando:

    mkdir tip-calculator && cd tip-calculator

    Lag Python-filen

    Deretter lager du skriptfilen der vi skal skrive Python-skriptet. I mitt tilfelle vil jeg bruke berøringskommandoen for å gjøre det:

    touch main.py

    Åpne skriptfilen med din favorittkoderedigerer

    For å begynne å skrive koden til skriptet, åpne filen med ditt favorittkoderedigeringsprogram. Jeg kommer til å bruke nano som er en terminalbasert tekstredigerer.

    nano main.py

    Motta inndata

    Når dette er gjort, kan vi legge til følgende kodelinjer ø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 utgangspunktet mottar dette input og kaster datatypen for hver input fra en streng til den mest passende typen.

    Beregn tipsbeløpet

    Deretter beregner vi tipsbeløpet ved å multiplisere tipsprosenten med regningsbeløpet.

    tip_amount = bill_amount * tip_percentage / 100

    Del regningen og tipset for å få hver persons bidrag til de to

    # 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

    Beregn det totale bidraget

    Deretter legger du til de individuelle bidragene for å bestemme det totale bidraget per person.

    total_contribution = bill_contribution + tip_contribution

    Vis resultatene

    Til slutt, skriv ut resultatene til brukeren.

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

    Testing av tip- og delkalkulatoren

    Til slutt skal skriptfilen din se slik ut:

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

    På dette tidspunktet kan du gjerne teste applikasjonen din ved å bruke følgende kommando:

    python3 main.py

    Bygg tip- og delkalkulatoren med GUI

    I den neste delen av denne opplæringen vil vi implementere den samme applikasjonen, men med et grafisk brukergrensesnitt. For å bygge GUI, vil vi bruke en pakke kalt Tkinter.

      En nybegynnerveiledning for å starte frilanskarriere

    Setter opp

    Tkinter er en pakke innebygd i Pythons standardbibliotek. Dette betyr at den ble installert som standard da du installerte Python.

    På Linux-maskiner med Python installert som standard, er TKinter imidlertid ikke forhåndsinstallert for å spare plass. Derfor må du installere den manuelt ved å bruke følgende kommando:

    sudo apt-get install python3-tk

    Lag en prosjektfil

    For å begynne, lag en fil der Python-skriptet vil bli lagret. Etter at du har opprettet filen, åpner du den med ditt foretrukne tekstredigeringsprogram.

    touch gui.py

    Importer Tkinter

    Deretter importerer du Tkinter-pakken ved å legge til følgende linje øverst i filen.

    import tkinter from tk

    Lag brukergrensesnittet

    Deretter kan vi begynne å lage brukergrensesnittet.

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

    Koden ovenfor opprettet et vindu som inneholder alle widgetene for brukergrensesnittet. I tillegg opprettet den en etikett som vil fungere som vinduets tittel.

      Microsoft Teams: snu kameraet horisontalt

    Deretter opprettet den etiketter og oppføringsfelt for de tre inngangene: bill_amount, tip_percentage og number_of_people. Til slutt opprettet den en knapp som brukeren vil klikke for å kjøre beregningen.

    Lag en funksjon for å beregne utdataene

    Etter dette kan vi lage en funksjon for å håndtere klikket på Enter-knappen. Denne funksjonen vil ta verdiene til inntastingsfeltene og bruke dem til å beregne utdataene ved å bruke algoritmen nevnt tidligere. Til slutt vil den lage en etikett for å vise utdataene og oppdatere vinduet.

    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 funksjonen ovenfor har blitt forklart gjennom kommentarer som forklarer hvert hovedtrinn.

    Feste hendelsesbehandleren til knappen

    Deretter binder vi hendelsesbehandleren til knappen klikk-hendelsen. Knappeklikk-hendelsen i Tkinter er representert av strengen ««. For å binde hendelsen til hendelsesbehandleren bruker vi bindingsmetoden til knappen. Legg til denne kodelinjen under funksjonsdefinisjonen:

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

    Til slutt, for å holde vinduet i gang, kaller vi hovedloopmetoden til vindusobjektet.

    window.mainloop()

    Og vi er ferdige!

    Testing av tip- og delkalkulatoren

    Du kan kjøre programmet ved å bruke følgende kommando:

    python3 gui.py

    Dette bør åpne vinduet som følger:

    Du kan kjøre kalkulatoren med eksempelinndata:

    Siste ord

    I denne opplæringen har vi laget en tips- og delkalkulator på to måter. Den første bruker et terminalbasert CLI-verktøy. Det andre er et GUI-verktøy som bruker Pythons Tkinter. Denne opplæringen viser hvordan du bygger et enkelt Python-prosjekt. Hvis du trenger å pusse opp eller pusse Python-ferdighetene dine, er her et Datacamp-kurs.

    Deretter kan du sjekke ut hvordan du lager en tilfeldig passordgenerator i Python.