Нека научим как да създадем калкулатор за съвет и разделяне в Python.
Това е страхотен личен проект за изграждане, за да практикувате уменията си за Python. Освен това този урок ще ви научи как да създавате приложението по два начина, първо като инструмент на командния ред и втори като GUI инструмент.
Съдържание
Преглед
Ще изградим приложението по два начина. Първо, ще изградим прост скрипт на обвивката на Python, който подканва потребителя за въвеждане и записва изхода.
Второ, ще дадем на програмата графичен потребителски интерфейс с помощта на Tkinter.
Спецификация на програмата
Програмата получава три входа:
- Сумата на сметката
- Процентът на бакшиша
- Броят на хората, споделящи сметката
Използвайки тези входове, програмата ще изчисли следния изход:
- Приносът на всеки човек към сметката
- Приносът на всеки човек към бакшиша
- Общият принос на всеки човек
Алгоритъм
За да постигне това, калкулаторът Tip and Split ще следва много прост алгоритъм, описан по-долу:
Предпоставки
За да следвате този урок, трябва да знаете и разбирате езика за програмиране Python. За този урок се изисква познаване на основни понятия, включително функции и класове.
Освен това трябва да имате инсталиран Python във вашата система. Ако не е, отидете на уебсайта на Python и го изтеглете. Като алтернатива, pctechbg.net има онлайн компилатор на Python, където можете да стартирате своя Python код в браузъра без никаква настройка на средата.
Изграждане на калкулатора с интерфейс на командния ред
Създайте папка на проекта
За да започнете, отидете до празна папка във вашата система. В моя случай използвам Ubuntu 22.04, така че да създам папка и да навигирам до нея с помощта на терминала; Трябва да въведа следната команда:
mkdir tip-calculator && cd tip-calculator
Създайте файла на Python
След това създайте скриптовия файл, където ще напишем скрипта на Python. В моя случай ще използвам командата touch, за да го направя:
touch main.py
Отворете файла със скрипта с любимия си редактор на кодове
За да започнете да пишете кода към скрипта, отворете файла с любимия си редактор на кодове. Ще използвам nano, който е базиран на терминал текстов редактор.
nano main.py
Получаване на входа
След като направим това, можем да добавим следните редове код в горната част на файла:
# 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
Покажете резултатите
Накрая изведете резултатите на потребителя.
# Displayinnng the results print("Bill contribution per person: ", bill_contribution) print("Tip contribution per person: ", tip_contribution) print("Total contribution per person: ", total_contribution)
Тестване на калкулатора за върха и разделяне
И накрая, вашият скрипт файл трябва да изглежда така:
# 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)
На този етап не се колебайте да стартирате тестово приложението си, като използвате следната команда:
python3 main.py
Изграждане на калкулатора за върха и сплит с GUI
В следващата част от този урок ще внедрим същото приложение, но с графичен потребителски интерфейс. За да изградим GUI, ще използваме пакет, наречен Tkinter.
Настройвам
Tkinter е пакет, вграден в стандартната библиотека на Python. Това означава, че е бил инсталиран по подразбиране, когато сте инсталирали Python.
Въпреки това, на Linux машини с инсталиран Python по подразбиране, TKinter не е предварително инсталиран, за да спести място. Следователно трябва да го инсталирате ръчно, като използвате следната команда:
sudo apt-get install python3-tk
Създайте файл на проекта
За да започнете, създайте файл, където ще се съхранява скриптът на Python. След като създадете файла, отворете го с предпочитания от вас текстов редактор.
touch gui.py
Импортирайте Tkinter
След това импортирайте пакета Tkinter, като добавите следния ред в горната част на файла.
import tkinter from tk
Създайте потребителския интерфейс
След това можем да започнем да създаваме потребителския интерфейс.
# 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")
Горният код създаде прозорец, съдържащ всички джаджи на потребителския интерфейс. Освен това създаде етикет, който ще служи като заглавие на прозореца.
След това създаде етикети и полета за въвеждане за трите входа: сума_сметка, процент_бакшиш и брой_хора. И накрая, той създаде бутон, върху който потребителят ще щракне, за да изпълни изчислението.
Създайте функция за изчисляване на изходите
След това можем да създадем функция, която да обработва щракването на бутона Enter. Тази функция ще вземе стойностите на полетата за въвеждане и ще ги използва за изчисляване на изходите, като използва алгоритъма, споменат по-горе. И накрая, той ще създаде етикет за показване на изхода и актуализиране на прозореца.
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()
Кодът в горната функция е обяснен чрез коментари, обясняващи всяка основна стъпка.
Прикрепване на манипулатора на събитие към бутона
След това свързваме манипулатора на събитието със събитието за щракване на бутон. Събитието за натискане на бутон в Tkinter е представено от низа ‘
btn_enter.bind('<Button-1>', handle_click) btn_enter.pack()
И накрая, за да поддържаме прозореца работещ, ние извикваме метода mainloop на обекта прозорец.
window.mainloop()
И сме готови!
Тестване на калкулатора за върха и разделяне
Можете да стартирате приложението, като използвате следната команда:
python3 gui.py
Това трябва да отвори прозореца, както следва:
Можете да стартирате калкулатора с примерен вход:
Заключителни думи
В този урок създадохме калкулатор за бакшиш и разделяне по два начина. Първият използва терминален CLI инструмент. Вторият е GUI инструмент, използващ Tkinter на Python. Този урок показва как да създадете прост проект на Python. Ако трябва да освежите или усъвършенствате уменията си за Python, ето курс на Datacamp.
След това можете да проверите как да създадете генератор на произволни пароли в Python.