Како да направите калкулатор савета и раздвајања у Питхон-у

U ovom tekstu ćemo naučiti kako da kreiramo kalkulator za računanje napojnica i podelu troškova u Python-u.

Ovo je odličan lični projekat koji vam omogućava da vežbate svoje Python veštine. Štaviše, ovaj vodič će vas uputiti kako da napravite ovu aplikaciju na dva različita načina: prvo kao alatku komandne linije, a zatim kao GUI (grafički korisnički interfejs) alatku.

Pregled

Aplikaciju ćemo kreirati na dva načina. Prvo ćemo izraditi jednostavnu Python skriptu koja će od korisnika tražiti unos podataka i prikazivati rezultate.

Zatim, program ćemo obogatiti grafičkim korisničkim interfejsom koristeći Tkinter.

Specifikacija programa

Program će prihvatati tri ulazne vrednosti:

  • Ukupan iznos računa
  • Procenat napojnice
  • Broj osoba koje dele račun

Na osnovu ovih unosa, program će izračunati i prikazati sledeće rezultate:

  • Doprinos svake osobe za ukupan iznos računa
  • Doprinos svake osobe za napojnicu
  • Ukupan doprinos svake osobe (račun + napojnica)

Algoritam

Kalkulator za računanje napojnica i podelu troškova će pratiti jednostavan algoritam:

  • Prihvati unose: iznos_racuna, procenat_napojnice, broj_osoba
  • Izračunaj iznos napojnice: iznos_racuna * procenat_napojnice / 100
  • Podeli iznos računa sa brojem osoba da bi se dobio doprinos svake osobe za račun.
  • Podeli iznos napojnice sa brojem osoba da bi se dobio doprinos svake osobe za napojnicu.
  • Na kraju, saberi doprinose za račun i napojnicu da bi se dobio ukupan iznos po osobi.
  • Preduslovi

    Da biste pratili ovaj vodič, potrebno je da imate osnovno znanje programskog jezika Python. Za ovaj tutorijal, neophodno je poznavanje osnovnih koncepata, uključujući funkcije i klase.

    Takođe, Python treba da bude instaliran na vašem sistemu. Ako ga nemate, posetite zvaničnu Python veb stranicu i preuzmite instalaciju. Alternativno, postoji i online Python kompajler gde možete pokrenuti Python kod direktno u pregledaču bez potrebe za podešavanjem okruženja.

    Izrada kalkulatora sa interfejsom komandne linije

    Kreiranje fascikle projekta

    Za početak, kreirajte praznu fasciklu na vašem sistemu. U ovom slučaju, koristim Ubuntu 22.04, pa kreiram fasciklu i navigiram do nje pomoću terminala; unosim sledeću komandu:

    mkdir tip-calculator && cd tip-calculator

    Kreiranje Python datoteke

    Zatim, kreirajte datoteku skripte u koju ćemo pisati Python kod. Koristiću `touch` komandu za to:

    touch main.py

    Otvaranje datoteke skripte u omiljenom uređivaču koda

    Da biste započeli pisanje koda, otvorite datoteku u vašem omiljenom uređivaču. Ja ću koristiti `nano`, terminalski uređivač teksta.

    nano main.py

    Prijem unosa

    Kada je ovo urađeno, možete dodati sledeće linije koda na početak datoteke:

    # Prijem unosa za iznos računa kao broj sa pokretnim zarezom
    bill_amount = float(input("Iznos računa: "))
    
    # Prijem unosa za procenat napojnice kao broj sa pokretnim zarezom
    tip_percentage = float(input("Procenat napojnice: "))
    
    # Prijem unosa za broj osoba kao ceo broj
    number_of_people = int(input("Broj osoba: "))
    

    Ovaj kod preuzima unos od korisnika i konvertuje tip podataka svakog unosa iz teksta (string) u odgovarajući brojčani tip.

    Izračunavanje iznosa napojnice

    Zatim, računamo iznos napojnice množenjem procenta napojnice sa iznosom računa.

    tip_amount = bill_amount * tip_percentage / 100

    Podela računa i napojnice za doprinos svake osobe

    # Izračunavanje doprinosa svake osobe za račun
    bill_contribution = bill_amount / number_of_people
    
    # Izračunavanje doprinosa svake osobe za napojnicu
    tip_contribution = tip_amount / number_of_people
    

    Izračunavanje ukupnog doprinosa

    Zatim, sabiramo pojedinačne doprinose da bi dobili ukupan doprinos po osobi.

    total_contribution = bill_contribution + tip_contribution

    Prikaz rezultata

    Na kraju, prikazujemo rezultate korisniku.

    # Prikaz rezultata
    print("Doprinos računu po osobi: ", bill_contribution)
    print("Doprinos napojnici po osobi: ", tip_contribution)
    print("Ukupan doprinos po osobi: ", total_contribution)
    

    Testiranje kalkulatora za napojnicu i podelu troškova

    Na kraju, vaša datoteka skripte treba da izgleda ovako:

    # Prijem unosa za iznos računa kao broj sa pokretnim zarezom
    bill_amount = float(input("Iznos računa: "))
    
    # Prijem unosa za procenat napojnice kao broj sa pokretnim zarezom
    tip_percentage = float(input("Procenat napojnice: "))
    
    # Prijem unosa za broj osoba kao ceo broj
    number_of_people = int(input("Broj osoba: "))
    
    tip_amount = bill_amount * tip_percentage / 100
    
    # Izračunavanje doprinosa svake osobe za račun
    bill_contribution = bill_amount / number_of_people
    
    # Izračunavanje doprinosa svake osobe za napojnicu
    tip_contribution = tip_amount / number_of_people
    
    total_contribution = bill_contribution + tip_contribution
    
    # Prikaz rezultata
    print("Doprinos računu po osobi: ", bill_contribution)
    print("Doprinos napojnici po osobi: ", tip_contribution)
    print("Ukupan doprinos po osobi: ", total_contribution)
    

    Sada možete testirati vašu aplikaciju pomoću sledeće komande:

    python3 main.py

    Izrada kalkulatora za napojnicu i podelu troškova sa GUI

    U narednom delu ovog vodiča, implementiraćemo istu aplikaciju, ali sa grafičkim korisničkim interfejsom. Za izradu GUI, koristićemo paket koji se zove Tkinter.

    Podešavanje

    Tkinter je paket koji dolazi u sklopu standardne Python biblioteke. To znači da je podrazumevano instaliran kada instalirate Python.

    Međutim, na Linux sistemima sa podrazumevano instaliranim Python-om, Tkinter nije unapred instaliran radi uštede prostora. Stoga, potrebno ga je instalirati ručno pomoću sledeće komande:

    sudo apt-get install python3-tk

    Kreiranje datoteke projekta

    Za početak, kreirajte datoteku u koju će se smestiti Python skripta. Nakon kreiranja datoteke, otvorite je pomoću željenog editora teksta.

    touch gui.py

    Uvoz Tkinter-a

    Zatim, uvezite Tkinter paket dodavanjem sledeće linije na vrh datoteke.

    import tkinter as tk

    Kreiranje korisničkog interfejsa

    Zatim možemo početi sa kreiranjem korisničkog interfejsa.

    # Kreiranje prozora
    window = tk.Tk()
    
    # Kreiranje naslova prozora
    tk.Label(text="Kalkulator za napojnicu i podelu troškova").pack()
    
    # Kreiranje polja za unos iznosa računa
    tk.Label(text="Unesite iznos računa").pack()
    ent_bill = tk.Entry(width=40)
    ent_bill.pack()
    
    # Kreiranje polja za unos procenta napojnice
    tk.Label(text="Unesite procenat napojnice").pack()
    ent_tip = tk.Entry(width=40)
    ent_tip.pack()
    
    # Kreiranje polja za unos broja osoba
    tk.Label(text="Unesite broj osoba").pack()
    ent_people = tk.Entry(width=40)
    ent_people.pack()
    
    # Kreiranje dugmeta "Izračunaj"
    btn_enter = tk.Button(text="Izračunaj")
    

    Gornji kod kreira prozor koji sadrži sve elemente korisničkog interfejsa. Takođe, kreira oznaku koja će služiti kao naslov prozora.

    Zatim kreira oznake i polja za unos za tri ulazne vrednosti: iznos_racuna, procenat_napojnice i broj_osoba. Na kraju, kreira dugme na koje će korisnik kliknuti da bi pokrenuo proračun.

    Kreiranje funkcije za izračunavanje rezultata

    Nakon ovoga, možemo kreirati funkciju koja će se aktivirati klikom na dugme „Izračunaj“. Ova funkcija će preuzeti vrednosti iz polja za unos i koristiti ih za izračunavanje rezultata koristeći prethodno navedeni algoritam. Na kraju, kreiraće oznaku za prikaz rezultata i ažurirati prozor.

    def handle_click(event):
        # Preuzimanje unosa iz polja za unos pomoću get metode
        # Takođe, konvertovanje unosa iz podrazumevanog tipa string
        bill_amount = float(ent_bill.get())
        tip_percentage = float(ent_tip.get())
        number_of_people = int(ent_people.get())
        
        # Izračunavanje iznosa napojnice
        tip_amount = bill_amount * tip_percentage / 100
        
        # Izračunavanje doprinosa računu svake osobe
        bill_contribution = bill_amount / number_of_people
    
        # Izračunavanje doprinosa napojnici svake osobe
        tip_contribution = tip_amount / number_of_people
    
        # Izračunavanje ukupnog doprinosa svake osobe
        total_contribution = bill_contribution + tip_contribution
    
        # Kreiranje izlaznog stringa
        output = f'Račun po osobi: {bill_contribution} \n Napojnica po osobi: {tip_contribution} \n Ukupno po osobi: {total_contribution}'
        
        # Kreiranje oznake za tekst rezultata
        tk.Label(text=output).pack()
    
        # Ažuriranje prozora da bi se prikazale promene
        window.update()
    

    Kod u gornjoj funkciji je objašnjen komentarima koji opisuju svaki glavni korak.

    Povezivanje rukovaoca događajem sa dugmetom

    Zatim, povezujemo rukovaoca događajem sa događajem klika na dugme. Događaj klika na dugme u Tkinteru je predstavljen stringom `<Button-1>`. Da bismo povezali događaj sa rukovaocem događaja, koristimo metod `bind` dugmeta. Dodajte ovu liniju koda ispod definicije funkcije:

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

    Na kraju, da bi prozor ostao otvoren, pozivamo metod `mainloop` objekta prozora.

    window.mainloop()

    I to je sve!

    Testiranje kalkulatora za napojnicu i podelu troškova

    Aplikaciju možete pokrenuti pomoću sledeće komande:

    python3 gui.py

    Ovo bi trebalo da otvori prozor koji izgleda ovako:

    Možete testirati kalkulator unosom uzorka podataka:

    Završne reči

    U ovom tutorijalu smo kreirali kalkulator za računanje napojnica i podelu troškova na dva načina. Prvi koristi CLI (interfejs komandne linije) alat baziran na terminalu. Drugi je GUI (grafički korisnički interfejs) alat koji koristi Python-ov Tkinter. Ovaj vodič je pokazao kako da kreirate jednostavan Python projekat. Ako želite da poboljšate svoje Python veštine, pogledajte ovaj kurs na Datacampu.

    Zatim, možete pogledati kako da kreirate nasumični generator lozinki u Python-u.