Python'da Bahşiş ve Bölme Hesaplayıcısı Nasıl Oluşturulur
Yayınlanan: 2023-01-06Python'da bir Tip and Split hesaplayıcısının nasıl oluşturulacağını öğrenelim.
Python becerilerinizi geliştirmek için inşa edebileceğiniz harika bir kişisel projedir. Ayrıca, bu eğitim size uygulamayı iki şekilde nasıl oluşturacağınızı öğretecek, ilk olarak bir komut satırı aracı ve ikinci olarak bir GUI aracı olarak.
Ön izleme
Uygulamayı iki şekilde oluşturacağız. İlk olarak, kullanıcıdan girdi isteyen ve çıktıyı yazan basit bir Python kabuk betiği oluşturacağız.

İkinci olarak, programa Tkinter kullanarak bir Grafik Kullanıcı Arayüzü vereceğiz.

Program Şartnamesi
Program üç girdi alır:
- fatura tutarı
- Bahşiş yüzdesi
- Faturayı paylaşan kişi sayısı
Program bu girdileri kullanarak aşağıdaki çıktıyı hesaplayacaktır:
- Her kişinin faturaya katkısı
- Bahşiş için her kişinin katkısı
- Her kişinin toplam katkısı
algoritma
Bunu başarmak için Bahşiş ve Ayırma hesaplayıcısı, aşağıda özetlenen çok basit bir algoritmayı izleyecektir:
- Girişleri alın
: bill_amount
,tip_percentage
,number_of_people
-
bill_amount
*tip_percentage / 100
ile çarparak bahşişamount
hesaplayın - Her kişinin faturaya katkısını almak için
number_of_people
bill_amount
. - Her kişinin bahşiş katkısını almak için
number_of_people
tip_amount
. - Son olarak, ödenecek toplam tutarı almak için faturaya katkıları ve bahşişi ekleyin.
Önkoşullar
Bu öğreticiyi takip etmek için Python programlama dilini bilmeli ve anlamalısınız. Bu öğretici için, işlevler ve sınıflar da dahil olmak üzere temel kavramlar bilgisi gereklidir.
Ayrıca sisteminizde Python kurulu olmalıdır. Değilse, Python web sitesine gidin ve indirin. Alternatif olarak Geekflare, Python kodunuzu hiçbir ortam kurulumu olmadan tarayıcıda çalıştırabileceğiniz çevrimiçi bir Python derleyicisine sahiptir.
Hesap Makinesini Komut Satırı Arayüzüyle Oluşturma
Bir Proje Klasörü Oluşturun
Başlamak için, sisteminizde boş bir klasöre gidin. Benim durumumda, bir klasör oluşturmak ve terminali kullanarak ona gitmek için Ubuntu 22.04 kullanıyorum; Aşağıdaki komutu girmem gerekiyor:
mkdir tip-calculator && cd tip-calculator
Python Dosyasını Oluşturun
Ardından, Python betiğini yazacağımız betik dosyasını oluşturun. Benim durumumda, bunu yapmak için touch
komutunu kullanacağım:
touch main.py
Komut Dosyasını Favori Kod Düzenleyicinizle Açın
Komut dosyasına kod yazmaya başlamak için, dosyayı favori kod düzenleyicinizle açın. Terminal tabanlı bir metin editörü olan nano
kullanacağım.
nano main.py
Girdiyi Al
Bunu yaptıktan sonra, dosyanın en üstüne aşağıdaki kod satırlarını ekleyebiliriz:
# 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: "))
Temel olarak, bu girdiyi alır ve her girdinin veri türünü bir diziden en uygun türe çevirir.
Bahşiş Miktarını Hesapla
Ardından, bahşiş yüzdesini fatura tutarıyla çarparak bahşiş miktarını hesaplıyoruz.
tip_amount = bill_amount * tip_percentage / 100
Faturayı Böl ve Her Kişinin İkiye Katkısını Almak İçin Bahşiş Ver
# 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
Toplam Katkıyı Hesaplayın
Ardından, kişi başına toplam katkıyı belirlemek için bireysel katkıları ekleyin.
total_contribution = bill_contribution + tip_contribution
Sonuçları Görüntüle
Son olarak, sonuçları kullanıcıya çıkarın.
# Displayinnng the results print("Bill contribution per person: ", bill_contribution) print("Tip contribution per person: ", tip_contribution) print("Total contribution per person: ", total_contribution)
Bahşiş ve Ayırma Hesaplayıcısını Test Etme
Son olarak, betik dosyanız şöyle görünmelidir:
# 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)
Bu noktada, aşağıdaki komutu kullanarak uygulamanızı test etmekten çekinmeyin:

python3 main.py

Bahşiş ve Ayırma Hesaplayıcısını GUI ile Oluşturma
Bu eğitimin bir sonraki bölümünde, aynı uygulamayı bir Grafik Kullanıcı Arayüzü ile uygulayacağız. GUI'yi oluşturmak için Tkinter adlı bir paket kullanacağız.
Kurulum
Tkinter, Python'un Standart Kitaplığında yerleşik bir pakettir. Bu, Python'u kurduğunuzda varsayılan olarak kurulduğu anlamına gelir.
Ancak Python'un varsayılan olarak kurulu olduğu Linux makinelerinde, yerden tasarruf etmek için TKinter önceden kurulmamıştır. Bu nedenle, aşağıdaki komutu kullanarak manuel olarak kurmanız gerekir:
sudo apt-get install python3-tk
Bir Proje Dosyası Oluşturun
Başlamak için, Python betiğinin depolanacağı bir dosya oluşturun. Dosyayı oluşturduktan sonra tercih ettiğiniz metin düzenleyiciyle açın.
touch gui.py
Tkinter'ı içe aktar
Ardından, dosyanın başına aşağıdaki satırı ekleyerek Tkinter paketini içe aktarın.
import tkinter from tk
Kullanıcı Arayüzünü Oluşturun
Ardından, kullanıcı arayüzünü oluşturmaya başlayabiliriz.
# 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")
Yukarıdaki kod, tüm Kullanıcı Arayüzü widget'larını içeren bir pencere oluşturdu. Ek olarak, pencerenin başlığı olarak hizmet edecek bir etiket oluşturdu.
Ardından, üç girdi için etiketler ve giriş alanları oluşturdu: bill_amount
, tip_percentage
ve number_of_people
. Son olarak, kullanıcının hesaplamayı çalıştırmak için tıklayacağı bir düğme oluşturdu.
Çıktıları Hesaplamak için Bir İşlev Oluşturun
Bundan sonra, Enter düğmesinin tıklanmasını işlemek için bir işlev oluşturabiliriz. Bu işlev, giriş alanlarının değerlerini alacak ve bunları daha önce belirtilen algoritmayı kullanarak çıktıları hesaplamak için kullanacaktır. Son olarak, çıktıyı görüntülemek ve pencereyi güncellemek için bir etiket oluşturacaktır.
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()
Yukarıdaki işlevdeki kod, her bir ana adımı açıklayan yorumlarla açıklanmıştır.
Olay İşleyiciyi Düğmeye Ekleme
Ardından, olay işleyicisini düğme tıklama olayına bağlarız. Tkinter'daki button click olayı ' <Button-1>
' dizgisi ile temsil edilir. Olayı olay işleyiciye bağlamak için düğmenin bind yöntemini kullanırız. İşlev tanımının altına bu kod satırını ekleyin:
btn_enter.bind('<Button-1>', handle_click) btn_enter.pack()
Son olarak, pencereyi çalışır durumda tutmak için, window
nesnesinin ana mainloop
yöntemini çağırıyoruz.
window.mainloop()
Ve işimiz bitti!
Bahşiş ve Ayırma Hesaplayıcısını Test Etme
Aşağıdaki komutu kullanarak uygulamayı çalıştırabilirsiniz:
python3 gui.py
Bu, pencereyi aşağıdaki gibi açmalıdır:

Hesaplayıcıyı örnek girdi ile çalıştırabilirsiniz:

Son sözler
Bu eğitimde, iki şekilde bir bahşiş ve bölme hesap makinesi oluşturduk. İlki, terminal tabanlı bir CLI aracı kullanır. İkincisi, Python'un Tkinter'ını kullanan bir GUI aracıdır. Bu öğretici, basit bir Python projesinin nasıl oluşturulacağını gösterir. Python becerilerinizi tazelemeniz veya cilalamanız gerekiyorsa işte bir Datacamp kursu.
Ardından, Python'da nasıl rastgele bir parola oluşturucu oluşturacağınızı kontrol edebilirsiniz.