Как создать калькулятор чаевых и сплитов в Python
Опубликовано: 2023-01-06Давайте узнаем, как создать калькулятор чаевых и сплитов в Python.
Это отличный личный проект для отработки навыков Python. Кроме того, в этом учебном пособии вы узнаете, как создать приложение двумя способами: во-первых, как инструмент командной строки, а во-вторых, как инструмент с графическим интерфейсом.
Предварительный просмотр
Мы собираемся создать приложение двумя способами. Во-первых, мы создадим простой сценарий оболочки Python, который запрашивает у пользователя ввод и записывает вывод.
Во-вторых, мы предоставим программе графический интерфейс пользователя с помощью Tkinter.
Спецификация программы
Программа получает три входа:
- Сумма счета
- Процент чаевых
- Количество людей, разделяющих счет
Используя эти входные данные, программа вычислит следующий результат:
- Вклад каждого человека в счет
- Вклад каждого человека в чаевые
- Общий вклад каждого человека
Алгоритм
Для этого калькулятор чаевых и сплитов будет следовать очень простому алгоритму, описанному ниже:
- Получите входные данные
: bill_amount
,tip_percentage
,number_of_people
. - Рассчитайте
amount
чаевых, умноживbill_amount
*tip_percentage / 100
- Разделите
bill_amount
наnumber_of_people
, чтобы получить вклад каждого человека в счет. - Разделите
tip_amount
наnumber_of_people
, чтобы получить вклад каждого человека в чаевые. - Наконец, добавьте взносы в счет и чаевые, чтобы получить общую сумму к оплате.
Предпосылки
Чтобы следовать этому руководству, вы должны знать и понимать язык программирования Python. Для этого руководства требуется знание основных понятий, включая функции и классы.
Кроме того, в вашей системе должен быть установлен Python. Если это не так, зайдите на сайт Python и загрузите его. Кроме того, у Geekflare есть онлайн-компилятор 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
Создание калькулятора чаевых и сплитов с графическим интерфейсом
В следующей части этого руководства мы реализуем то же приложение, но с графическим интерфейсом пользователя. Для создания графического интерфейса мы будем использовать пакет под названием Tkinter.
Настройка
Tkinter — это пакет, встроенный в стандартную библиотеку Python. Это означает, что он был установлен по умолчанию при установке Python.
Однако на машинах Linux с установленным по умолчанию Python TKinter не предустанавливается для экономии места. Поэтому вам необходимо установить его вручную с помощью следующей команды:
sudo apt-get install python3-tk
Создать файл проекта
Для начала создайте файл, в котором будет храниться скрипт Python. После создания файла откройте его в предпочитаемом текстовом редакторе.
touch gui.py
Импортировать Ткинтер
Затем импортируйте пакет 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")
Приведенный выше код создал окно, содержащее все виджеты пользовательского интерфейса. Кроме того, он создал метку, которая будет служить заголовком окна.
Затем он создал метки и поля ввода для трех входных данных: bill_amount
, tip_percentage
и number_of_people
. Наконец, он создал кнопку, которую пользователь нажимает, чтобы запустить расчет.
Создайте функцию для вычисления выходных данных
После этого мы можем создать функцию для обработки нажатия кнопки 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 представлено строкой ' <Button-1>
'. Чтобы привязать событие к обработчику события, мы используем метод привязки кнопки. Добавьте эту строку кода под определением функции:
btn_enter.bind('<Button-1>', handle_click) btn_enter.pack()
Наконец, чтобы окно продолжало работать, мы вызываем метод mainloop
объекта window
.
window.mainloop()
И мы закончили!
Тестирование калькулятора чаевых и сплитов
Вы можете запустить приложение с помощью следующей команды:
python3 gui.py
Это должно открыть окно следующим образом:
Вы можете запустить калькулятор с образцом ввода:
Заключительные слова
В этом уроке мы создали калькулятор чаевых и разделения двумя способами. В первом используется инструмент командной строки на основе терминала. Второй — инструмент с графическим интерфейсом, использующий Python Tkinter. В этом руководстве показано, как создать простой проект Python. Если вам нужно освежить или отполировать свои навыки Python, вот курс Datacamp.
Далее вы можете узнать, как создать генератор случайных паролей в Python.