Vytvoření kalkulačky spropitného a rozdělení účtu v Pythonu
Pojďme se společně podívat na postup, jak naprogramovat kalkulačku pro výpočet spropitného a rozdělení účtu mezi více lidí. Tento projekt je skvělou příležitostí k procvičení vašich programátorských dovedností v Pythonu. V tomto článku si ukážeme dva způsoby, jak takovou aplikaci vytvořit: nejprve jako nástroj pro příkazovou řádku a následně s grafickým uživatelským rozhraním (GUI).
Přehled
Aplikaci si představíme ve dvou variantách. První bude jednoduchý skript v Pythonu, který si vyžádá od uživatele potřebné vstupy a vypíše výsledky. Druhá verze pak bude disponovat grafickým rozhraním vytvořeným pomocí knihovny Tkinter.
Specifikace programu
Program bude vyžadovat následující tři vstupy:
- Celkovou částku účtu.
- Procento spropitného, které chcete zaplatit.
- Počet osob, mezi které se má účet rozdělit.
Na základě těchto vstupů program provede výpočty a zobrazí následující:
- Částku, kterou každý člověk přispívá na úhradu účtu.
- Výši spropitného, kterou každý člověk platí.
- Celkovou částku, kterou každý člověk platí (součet příspěvku na účet a spropitného).
Algoritmus
Kalkulačka pro výpočet spropitného a rozdělení účtu bude fungovat na základě následujícího algoritmu:
- Získej vstupy:
částka_účtu,procento_spropitného,počet_osob. - Vypočti výši spropitného:
částka_účtu * procento_spropitného / 100. - Vypočti příspěvek každého člověka na úhradu účtu:
částka_účtu / počet_osob. - Vypočti příspěvek každého člověka na spropitné:
částka_spropitného / počet_osob. - Vypočti celkový příspěvek každého člověka:
příspěvek_na_účet + příspěvek_na_spropitné.
Požadavky
Pro úspěšné sledování tohoto návodu byste měli mít základní znalosti programování v jazyce Python. Je nutné, abyste rozuměli konceptům, jako jsou funkce a třídy. Kromě toho je nutné mít v systému nainstalovaný Python. Pokud jej ještě nemáte, můžete si jej stáhnout z oficiálních stránek Pythonu. Alternativně můžete využít online kompilátor Pythonu na etechblog.cz, kde můžete spouštět kód přímo v prohlížeči.
Kalkulačka v příkazovém řádku
Vytvoření složky projektu
Začněte tím, že si ve vašem systému vytvoříte prázdnou složku. Například v Ubuntu 22.04 můžete složku vytvořit a přejít do ní pomocí příkazu:
mkdir tip-calculator && cd tip-calculator
Vytvoření Python souboru
Následně si vytvořte soubor, do kterého budeme psát Python skript. K tomu můžete použít například příkaz touch:
touch main.py
Otevření souboru v textovém editoru
Soubor otevřete ve svém oblíbeném textovém editoru, abyste mohli začít psát kód. Já budu používat nano, textový editor spouštěný v terminálu:
nano main.py
Získání vstupů
Na začátek souboru vložte následující kód pro získání vstupů od uživatele:
# Získání částky účtu jako desetinného čísla
bill_amount = float(input("Zadejte částku účtu: "))
# Získání procenta spropitného jako desetinného čísla
tip_percentage = float(input("Zadejte procento spropitného: "))
# Získání počtu lidí jako celého čísla
number_of_people = int(input("Zadejte počet lidí: "))
Tento kód získá vstupy od uživatele a převede je z textového řetězce na vhodné datové typy (float pro desetinná čísla, int pro celá čísla).
Výpočet spropitného
Dalším krokem je výpočet celkové výše spropitného:
tip_amount = bill_amount * tip_percentage / 100
Rozdělení účtu a spropitného
Nyní spočítáme, kolik každý člověk platí za úhradu účtu a spropitné:
# Výpočet příspěvku každého člověka na úhradu účtu
bill_contribution = bill_amount / number_of_people
# Výpočet příspěvku každého člověka na spropitné
tip_contribution = tip_amount / number_of_people
Výpočet celkového příspěvku
Spočítáme celkovou částku, kterou každý člověk platí (součet příspěvku na účet a spropitného):
total_contribution = bill_contribution + tip_contribution
Zobrazení výsledků
Nakonec zobrazíme výsledky uživateli:
# Zobrazení výsledků
print("Příspěvek na úhradu účtu na osobu: ", bill_contribution)
print("Příspěvek na spropitné na osobu: ", tip_contribution)
print("Celkový příspěvek na osobu: ", total_contribution)
Kompletní kód kalkulačky
Kompletní obsah souboru main.py by měl vypadat takto:
# Získání částky účtu jako desetinného čísla
bill_amount = float(input("Zadejte částku účtu: "))
# Získání procenta spropitného jako desetinného čísla
tip_percentage = float(input("Zadejte procento spropitného: "))
# Získání počtu lidí jako celého čísla
number_of_people = int(input("Zadejte počet lidí: "))
tip_amount = bill_amount * tip_percentage / 100
# Výpočet příspěvku každého člověka na úhradu účtu
bill_contribution = bill_amount / number_of_people
# Výpočet příspěvku každého člověka na spropitné
tip_contribution = tip_amount / number_of_people
total_contribution = bill_contribution + tip_contribution
# Zobrazení výsledků
print("Příspěvek na úhradu účtu na osobu: ", bill_contribution)
print("Příspěvek na spropitné na osobu: ", tip_contribution)
print("Celkový příspěvek na osobu: ", total_contribution)
Spuštění aplikace
Aplikaci můžete spustit příkazem:
python3 main.py

Kalkulačka s grafickým rozhraním
V této části si ukážeme, jak vytvořit stejnou aplikaci s grafickým rozhraním (GUI). K tomu využijeme knihovnu Tkinter.
Nastavení
Tkinter je knihovna, která je součástí standardní instalace Pythonu, takže byste ji měli mít k dispozici. Nicméně na Linuxových systémech, kde je Python instalován standardně, Tkinter není předinstalován. Proto jej musíte nainstalovat ručně:
sudo apt-get install python3-tk
Vytvoření souboru projektu
Stejně jako v předchozím případě, vytvořte soubor, do kterého budeme psát Python skript. Poté soubor otevřete ve svém oblíbeném textovém editoru:
touch gui.py
Import Tkinter
Na začátek souboru vložte příkaz pro import knihovny Tkinter:
import tkinter as tk
Vytvoření uživatelského rozhraní
Nyní se můžeme pustit do vytváření grafického rozhraní:
# Vytvoření hlavního okna
window = tk.Tk()
# Nastavení nadpisu okna
tk.Label(text="Kalkulačka spropitného a rozdělení účtu").pack()
# Vstupní pole pro částku účtu
tk.Label(text="Zadejte částku účtu").pack()
ent_bill = tk.Entry(width=40)
ent_bill.pack()
# Vstupní pole pro procento spropitného
tk.Label(text="Zadejte procento spropitného").pack()
ent_tip = tk.Entry(width=40)
ent_tip.pack()
# Vstupní pole pro počet lidí
tk.Label(text="Zadejte počet lidí").pack()
ent_people = tk.Entry(width=40)
ent_people.pack()
# Tlačítko pro spuštění výpočtu
btn_enter = tk.Button(text="Spustit výpočet")
Tento kód vytvoří okno s nadpisem a vstupními poli pro částku_účtu, procento_spropitného a počet_osob. Také se zde vytváří tlačítko pro spuštění výpočtu.
Funkce pro výpočet výstupů
Dále vytvoříme funkci, která se spustí po kliknutí na tlačítko. Tato funkce získá hodnoty z vstupních polí, provede výpočty a zobrazí výsledky. Všechny kroky jsou popsány v komentářích:
def handle_click(event):
# Získání vstupních hodnot z polí
# a převod na správný datový typ
bill_amount = float(ent_bill.get())
tip_percentage = float(ent_tip.get())
number_of_people = int(ent_people.get())
# Výpočet spropitného
tip_amount = bill_amount * tip_percentage / 100
# Výpočet příspěvku na úhradu účtu na osobu
bill_contribution = bill_amount / number_of_people
# Výpočet příspěvku na spropitné na osobu
tip_contribution = tip_amount / number_of_people
# Výpočet celkového příspěvku na osobu
total_contribution = bill_contribution + tip_contribution
# Vytvoření textu pro zobrazení výsledku
output = f'Účet na osobu: {bill_contribution:.2f} Kč\nSpropitné na osobu: {tip_contribution:.2f} Kč\nCelkem na osobu: {total_contribution:.2f} Kč'
# Zobrazení výsledku v textovém poli
tk.Label(text=output).pack()
# Aktualizace okna pro zobrazení změn
window.update()
Propojení události s tlačítkem
Nyní je třeba funkci handle_click propojit s událostí kliknutí na tlačítko. Událost kliknutí na tlačítko se v Tkinter reprezentuje řetězcem <Button-1>. Pro propojení události s funkcí se používá metoda bind:
btn_enter.bind('<Button-1>', handle_click)
btn_enter.pack()
Spuštění okna
Pro spuštění okna je nutné zavolat metodu mainloop():
window.mainloop()
Kompletní kód kalkulačky
Kompletní kód gui.py by měl vypadat takto:
import tkinter as tk
# Vytvoření hlavního okna
window = tk.Tk()
# Nastavení nadpisu okna
tk.Label(text="Kalkulačka spropitného a rozdělení účtu").pack()
# Vstupní pole pro částku účtu
tk.Label(text="Zadejte částku účtu").pack()
ent_bill = tk.Entry(width=40)
ent_bill.pack()
# Vstupní pole pro procento spropitného
tk.Label(text="Zadejte procento spropitného").pack()
ent_tip = tk.Entry(width=40)
ent_tip.pack()
# Vstupní pole pro počet lidí
tk.Label(text="Zadejte počet lidí").pack()
ent_people = tk.Entry(width=40)
ent_people.pack()
# Tlačítko pro spuštění výpočtu
btn_enter = tk.Button(text="Spustit výpočet")
def handle_click(event):
# Získání vstupních hodnot z polí
# a převod na správný datový typ
bill_amount = float(ent_bill.get())
tip_percentage = float(ent_tip.get())
number_of_people = int(ent_people.get())
# Výpočet spropitného
tip_amount = bill_amount * tip_percentage / 100
# Výpočet příspěvku na úhradu účtu na osobu
bill_contribution = bill_amount / number_of_people
# Výpočet příspěvku na spropitné na osobu
tip_contribution = tip_amount / number_of_people
# Výpočet celkového příspěvku na osobu
total_contribution = bill_contribution + tip_contribution
# Vytvoření textu pro zobrazení výsledku
output = f'Účet na osobu: {bill_contribution:.2f} Kč\nSpropitné na osobu: {tip_contribution:.2f} Kč\nCelkem na osobu: {total_contribution:.2f} Kč'
# Zobrazení výsledku v textovém poli
tk.Label(text=output).pack()
# Aktualizace okna pro zobrazení změn
window.update()
btn_enter.bind('<Button-1>', handle_click)
btn_enter.pack()
window.mainloop()
Spuštění GUI aplikace
Aplikaci můžete spustit pomocí příkazu:
python3 gui.py
Po spuštění by se mělo zobrazit okno s aplikací:

Aplikaci můžete vyzkoušet zadáním ukázkových vstupů:

Závěrem
V tomto návodu jsme si ukázali, jak vytvořit kalkulačku pro výpočet spropitného a rozdělení účtu dvěma způsoby. První byla varianta v příkazovém řádku, druhá s grafickým rozhraním pomocí knihovny Tkinter. Tento tutoriál slouží jako příklad, jak vytvořit jednoduchý projekt v Pythonu. Pokud si chcete procvičit své dovednosti, doporučujeme kurzy na Datacampu. Pro další inspiraci se můžete podívat na náš článek, jak vytvořit generátor náhodných hesel v Pythonu.