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:
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.