Bygg din egen tipskalkulator i Python: CLI & GUI guide!

La oss utforske hvordan man utvikler en kalkulator for tips og deling i Python.

Dette er et utmerket personlig prosjekt for å styrke dine Python-ferdigheter. Denne veiledningen vil også demonstrere hvordan du kan skape applikasjonen på to forskjellige måter: først som et kommandolinjeverktøy og deretter som et grafisk brukergrensesnitt (GUI).

Forhåndsvisning

Vi skal implementere denne applikasjonen på to ulike måter. Først utvikler vi et enkelt Python-skallskript som interagerer med brukeren via kommandolinjen og presenterer utdataene i terminalen.

Deretter vil vi forbedre programmet ved å legge til et grafisk brukergrensesnitt ved hjelp av Tkinter-biblioteket.

Programspesifikasjon

Applikasjonen skal motta tre input-verdier:

  • Det totale beløpet på regningen
  • Prosentandelen som skal gis i tips
  • Antall personer som deler regningen

Basert på disse innspillene skal programmet beregne følgende:

  • Hver persons andel av regningen
  • Hver persons andel av tipset
  • Hver persons totale bidrag (summen av andel regning og tips)

Algoritme

For å realisere dette vil kalkulatoren for tips og deling følge en enkel algoritme, beskrevet nedenfor:

  • Ta imot inndata: regningsbeløp (bill_amount), tips prosent (tip_percentage), antall personer (number_of_people)
  • Beregn tipsbeløpet ved å multiplisere regningsbeløp med tips prosent og dele på 100
  • Del regningsbeløpet på antall personer for å finne hver persons andel av regningen.
  • Del tipsbeløpet på antall personer for å finne hver persons andel av tipset.
  • Til slutt, summer andel regning og andel tips for å få totalbeløpet hver person skal betale.
  • Forutsetninger

    For å kunne følge denne veiledningen, kreves det at du har en grunnleggende forståelse av Python-programmeringsspråket. Kunnskap om grunnleggende konsepter som funksjoner og klasser er også nødvendig.

    I tillegg må Python være installert på systemet ditt. Hvis dette ikke er tilfelle, kan du laste ned og installere Python fra den offisielle nettsiden. Alternativt kan du benytte en online Python-kompilator, som den som tilbys på tipsbilk.net, for å kjøre koden direkte i nettleseren din uten å konfigurere et lokalt utviklingsmiljø.

    Utvikling av kalkulatoren med et kommandolinjegrensesnitt

    Opprett en prosjektmappe

    Start med å navigere til en tom mappe på systemet ditt. I mitt tilfelle bruker jeg Ubuntu 22.04, og for å opprette en ny mappe og navigere til den via terminalen, bruker jeg følgende kommando:

    mkdir tip-calculator && cd tip-calculator

    Opprett Python-filen

    Deretter oppretter du skriptfilen hvor vi skal skrive Python-koden. For mitt tilfelle bruker jeg kommandoen `touch` for å oppnå dette:

    touch main.py

    Åpne skriptfilen i din foretrukne kodeeditor

    For å begynne å skrive skriptet, åpner du filen i din foretrukne kodeeditor. Jeg vil bruke `nano`, som er en terminalbasert teksteditor.

    nano main.py

    Motta input

    Når filen er åpen, kan vi legge til følgende linjer øverst i filen:

    # Mottar input for regningsbeløpet som et flyttall
    bill_amount = float(input("Regningsbeløp: "))
    
    # Mottar input for tips-prosenten som et flyttall
    tip_percentage = float(input("Tips-prosent: "))
    
    # Mottar input for antall personer som et heltall
    number_of_people = int(input("Antall personer: "))

    Dette kodesnuttet mottar input fra brukeren og konverterer datatypen for hver input til den mest passende typen.

    Beregn tipsbeløpet

    Nå skal vi beregne selve tipsbeløpet ved å multiplisere tips-prosenten med regningsbeløpet og dele på 100.

    tip_amount = bill_amount * tip_percentage / 100

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

    # Beregner hver persons bidrag til regningen
    bill_contribution = bill_amount / number_of_people
    
    # Beregner hver persons bidrag til tipset
    tip_contribution = tip_amount / number_of_people

    Beregn det totale bidraget

    Deretter legger vi sammen de individuelle bidragene for å finne den totale kostnaden per person.

    total_contribution = bill_contribution + tip_contribution

    Vis resultatene

    Til slutt skriver vi ut resultatene til brukeren.

    # Viser resultatene
    print("Bidrag til regningen per person: ", bill_contribution)
    print("Bidrag til tipset per person: ", tip_contribution)
    print("Totalt bidrag per person: ", total_contribution)

    Testing av kalkulatoren for tips og deling

    Til slutt skal skriptfilen din se slik ut:

    # Mottar input for regningsbeløpet som et flyttall
    bill_amount = float(input("Regningsbeløp: "))
    
    # Mottar input for tips-prosenten som et flyttall
    tip_percentage = float(input("Tips-prosent: "))
    
    # Mottar input for antall personer som et heltall
    number_of_people = int(input("Antall personer: "))
    
    tip_amount = bill_amount * tip_percentage / 100
    
    # Beregner hver persons bidrag til regningen
    bill_contribution = bill_amount / number_of_people
    
    # Beregner hver persons bidrag til tipset
    tip_contribution = tip_amount / number_of_people
    
    total_contribution = bill_contribution + tip_contribution
    
    # Viser resultatene
    print("Bidrag til regningen per person: ", bill_contribution)
    print("Bidrag til tipset per person: ", tip_contribution)
    print("Totalt bidrag per person: ", total_contribution)

    Nå kan du teste applikasjonen din ved å kjøre følgende kommando:

    python3 main.py

    Bygg kalkulatoren for tips og deling med et grafisk brukergrensesnitt (GUI)

    I den neste delen av denne opplæringen skal vi implementere den samme applikasjonen, men med et grafisk brukergrensesnitt (GUI). For å utvikle GUI-et vil vi bruke biblioteket Tkinter.

    Oppsett

    Tkinter er et bibliotek som er inkludert i standard Python-distribusjon. Dette betyr at det skal være installert som standard når du installerer Python.

    På Linux-systemer der Python er forhåndsinstallert, er imidlertid ikke Tkinter inkludert som standard for å spare diskplass. Derfor må du installere det manuelt ved hjelp av følgende kommando:

    sudo apt-get install python3-tk

    Lag en prosjektfil

    For å starte, opprett en fil hvor Python-koden skal lagres. Etter at du har opprettet filen, åpner du den i din foretrukne tekstredigerer.

    touch gui.py

    Importer Tkinter

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

    import tkinter as tk

    Lag brukergrensesnittet

    Nå kan vi begynne å lage brukergrensesnittet.

    # Oppretter vinduet
    window = tk.Tk()
    
    # Oppretter vinduets tittel
    tk.Label(text="Kalkulator for tips og deling").pack()
    
    # Opprett et felt for å skrive inn regningsbeløpet
    tk.Label(text="Skriv inn regningsbeløp").pack()
    ent_bill = tk.Entry(width=40)
    ent_bill.pack()
    
    # Opprett et felt for å skrive inn tips-prosenten
    tk.Label(text="Skriv inn tips-prosent").pack()
    ent_tip = tk.Entry(width=40)
    ent_tip.pack()
    
    # Opprett et felt for å skrive inn antall personer
    tk.Label(text="Skriv inn antall personer").pack()
    ent_people = tk.Entry(width=40)
    ent_people.pack()
    
    # Opprett Enter-knappen
    btn_enter = tk.Button(text="Enter")

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

    Deretter opprettet den etiketter og input-felt for de tre input-verdiene: regningsbeløp, tips-prosent og antall personer. Til slutt opprettet den en knapp som brukeren vil trykke på for å starte beregningen.

    Lag en funksjon for å beregne utdataene

    Etter dette kan vi opprette en funksjon for å håndtere hendelsen når Enter-knappen klikkes. Denne funksjonen skal hente verdiene fra input-feltene og bruke dem til å beregne utdataene ved å følge algoritmen beskrevet tidligere. Til slutt vil den lage en etikett for å vise utdataene og oppdatere vinduet.

    def handle_click(event):
        # Henter input fra input-feltene ved hjelp av `get`-metoden
        # Konverterer også input fra standard streng-datatypen
        bill_amount = float(ent_bill.get())
        tip_percentage = float(ent_tip.get())
        number_of_people = int(ent_people.get())
    
        # Beregner beløpet som skal betales i tips
        tip_amount = bill_amount * tip_percentage / 100
        
        # Beregner hver persons andel av regningen
        bill_contribution = bill_amount / number_of_people
        
        # Beregner hver persons andel av tipset
        tip_contribution = tip_amount / number_of_people
    
        # Beregner det totale bidraget for hver person
        total_contribution = bill_contribution + tip_contribution
    
        # Lager en streng med utdataene
        output = f'Regning per person: {bill_contribution} \n Tips per person: {tip_contribution} \n Totalt per person: {total_contribution}'
    
        # Oppretter en etikett for utdata-teksten
        tk.Label(text=output).pack()
        
        # Oppdaterer vinduet for å reflektere UI-endringene
        window.update()

    Koden i funksjonen ovenfor er forklart via kommentarer som forklarer hvert hovedtrinn.

    Koble hendelsesbehandleren til knappen

    Nå kobler vi hendelsesbehandleren til hendelsen som skjer når knappen klikkes. Hendelsen for knappetrykk i Tkinter representeres av strengen «<Button-1>». For å binde hendelsen til hendelsesbehandleren bruker vi `bind`-metoden til knappen. Legg til denne koden under funksjonsdefinisjonen:

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

    Til slutt, for å holde vinduet kjørende, kaller vi `mainloop`-metoden til vindusobjektet.

    window.mainloop()

    Og vi er ferdige!

    Testing av kalkulatoren for tips og deling

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

    python3 gui.py

    Dette skal åpne vinduet som vist nedenfor:

    Du kan prøve kalkulatoren med følgende eksempel-input:

    Avsluttende ord

    I denne veiledningen har vi laget en kalkulator for tips og deling på to måter. Den første bruker et terminalbasert kommandolinjeverktøy (CLI). Den andre er et GUI-verktøy som bruker Tkinter-biblioteket for Python. Denne veiledningen viser hvordan man lager et enkelt Python-prosjekt. Hvis du trenger å forbedre dine Python-ferdigheter, kan du vurdere et Datacamp-kurs.

    Deretter kan du se hvordan man lager en tilfeldig passordgenerator i Python.