Як створити калькулятор підказок і розділення в Python

Розглянемо, як розробити калькулятор чайових і розділення рахунку, використовуючи мову програмування Python.

Це чудовий персональний проєкт для вдосконалення ваших навичок програмування на Python. Цей посібник також покаже вам два способи створення програми: як інструмент командного рядка та як інструмент з графічним інтерфейсом користувача.

Огляд

Ми збираємося реалізувати додаток двома різними способами. Спочатку ми розробимо простий скрипт Python, який запитуватиме в користувача необхідні дані та відображатиме результати.

Потім ми створимо програму з графічним інтерфейсом користувача, використовуючи бібліотеку Tkinter.

Специфікація програми

Програма повинна приймати три вхідні значення:

  • Загальна сума рахунку
  • Відсоток чайових
  • Кількість осіб, між якими розділити рахунок

На основі цих даних програма обчислює наступні результати:

  • Внесок кожної особи у загальну суму рахунку
  • Внесок кожної особи у суму чайових
  • Загальний внесок кожної особи (сума рахунку та чайових)

Алгоритм

Калькулятор чайових та розділення рахунку працюватиме за наступним алгоритмом:

  1. Отримати вхідні дані: загальна_сума_рахунку, відсоток_чайових, кількість_осіб.
  2. Обчислити суму чайових, помноживши загальна_сума_рахунку на відсоток_чайових та поділивши на 100.
  3. Розділити загальну_суму_рахунку на кількість_осіб, щоб отримати внесок кожної особи в рахунок.
  4. Розділити суму чайових на кількість_осіб, щоб отримати внесок кожної особи у чайові.
  5. Додати внески у рахунок та чайові, щоб отримати загальну суму внеску кожної особи.

Необхідні умови

Для того, щоб слідувати цьому посібнику, ви повинні мати базові знання мови програмування Python. Зокрема, потрібно розуміти основні концепції, включаючи функції та класи.

Крім того, на вашому комп’ютері має бути встановлений Python. Якщо це не так, відвідайте вебсайт Python та завантажте його. Також techukraine.net надає онлайн-компілятор Python, де ви можете запускати код Python без необхідності налаштування середовища.

Створення калькулятора з інтерфейсом командного рядка

Створення папки проєкту

Для початку створіть порожню папку на вашому комп’ютері. У моєму випадку, використовуючи Ubuntu 22.04, я створюю папку та переходжу до неї за допомогою терміналу, використовуючи таку команду:

mkdir tip-calculator && cd tip-calculator

Створення файлу Python

Далі створіть файл, де ми будемо писати наш код Python. У моєму випадку я використовую команду touch:

touch main.py

Відкриття файлу скрипту у редакторі коду

Відкрийте файл у вашому улюбленому редакторі коду, щоб почати писати програму. Я буду використовувати nano, текстовий редактор для терміналу.

nano main.py

Отримання вхідних даних

Тепер ми можемо додати наступний код на початку файлу:

# Отримання суми рахунку як числа з плаваючою комою
bill_amount = float(input("Сума рахунку: "))

# Отримання відсотка чайових як числа з плаваючою комою
tip_percentage = float(input("Відсоток чайових: "))

# Отримання кількості осіб як цілого числа
number_of_people = int(input("Кількість осіб: "))

Цей код отримує вхідні дані від користувача та перетворює їх з рядкового типу у відповідний числовий тип.

Обчислення суми чайових

Далі ми обчислюємо суму чайових, помноживши відсоток чайових на суму рахунку.

tip_amount = bill_amount * tip_percentage / 100

Розподіл рахунку та чайових між особами

# Обчислення внеску кожної особи в рахунок
bill_contribution = bill_amount / number_of_people

# Обчислення внеску кожної особи в чайові
tip_contribution = tip_amount / number_of_people

Обчислення загального внеску

Далі, додаємо внески за рахунок та чайові, щоб отримати загальний внесок на особу.

total_contribution = bill_contribution + tip_contribution

Відображення результатів

Нарешті, відображаємо результати користувачеві.

# Відображення результатів
print("Внесок за рахунок на особу:", bill_contribution)
print("Внесок за чайові на особу:", tip_contribution)
print("Загальний внесок на особу:", total_contribution)

Тестування калькулятора чайових та розділення рахунку

Ваш файл скрипту тепер повинен виглядати так:

# Отримання суми рахунку як числа з плаваючою комою
bill_amount = float(input("Сума рахунку: "))

# Отримання відсотка чайових як числа з плаваючою комою
tip_percentage = float(input("Відсоток чайових: "))

# Отримання кількості осіб як цілого числа
number_of_people = int(input("Кількість осіб: "))

tip_amount = bill_amount * tip_percentage / 100

# Обчислення внеску кожної особи в рахунок
bill_contribution = bill_amount / number_of_people

# Обчислення внеску кожної особи в чайові
tip_contribution = tip_amount / number_of_people

total_contribution = bill_contribution + tip_contribution

# Відображення результатів
print("Внесок за рахунок на особу:", bill_contribution)
print("Внесок за чайові на особу:", tip_contribution)
print("Загальний внесок на особу:", total_contribution)

Тепер ви можете запустити програму, використовуючи таку команду:

python3 main.py

Створення калькулятора з графічним інтерфейсом користувача

У наступній частині цього посібника ми реалізуємо ту ж програму, але з графічним інтерфейсом. Для створення GUI ми будемо використовувати пакет Tkinter.

Налаштування

Tkinter – це пакет, який входить до стандартної бібліотеки Python. Це означає, що він встановлений за замовчуванням разом з Python.

Однак, у системах Linux з встановленим Python, Tkinter зазвичай не встановлений для економії місця. Тому вам потрібно буде встановити його вручну, виконавши команду:

sudo apt-get install python3-tk

Створення файлу проєкту

Для початку створіть файл, в якому буде зберігатися код Python. Після створення файлу, відкрийте його у вашому улюбленому текстовому редакторі.

touch gui.py

Імпорт Tkinter

Потім імпортуйте пакет Tkinter, додавши наступний рядок у верхній частині файлу.

import tkinter as tk

Створення інтерфейсу користувача

Далі ми можемо почати створювати інтерфейс користувача.

# Створення вікна
window = tk.Tk()

# Створення заголовка вікна
tk.Label(text="Калькулятор чайових та розділення рахунку").pack()

# Створення поля для введення суми рахунку
tk.Label(text="Введіть суму рахунку").pack()
ent_bill = tk.Entry(width=40)
ent_bill.pack()

# Створення поля для введення відсотка чайових
tk.Label(text="Введіть відсоток чайових").pack()
ent_tip = tk.Entry(width=40)
ent_tip.pack()

# Створення поля для введення кількості осіб
tk.Label(text="Введіть кількість осіб").pack()
ent_people = tk.Entry(width=40)
ent_people.pack()

# Створення кнопки Enter
btn_enter = tk.Button(text="Enter")

Цей код створює вікно з необхідними віджетами інтерфейсу. Також створено мітку, що буде використовуватись як заголовок вікна.

Далі були створені мітки та поля введення для трьох вхідних даних: суми рахунку, відсотка чайових та кількості осіб. Нарешті, була створена кнопка, яку користувач буде натискати для запуску обчислень.

Створення функції для обчислення результатів

Тепер ми можемо створити функцію для обробки натискання кнопки Enter. Ця функція буде отримувати значення з полів введення та використовувати їх для обчислення результатів за допомогою алгоритму, описаного раніше. Нарешті, вона буде створювати мітку для відображення результату та оновлювати вікно.

def handle_click(event):
    # Отримання вхідних даних з полів введення
    # Також перетворення типів даних з рядкового на необхідний
    bill_amount = float(ent_bill.get())
    tip_percentage = float(ent_tip.get())
    number_of_people = int(ent_people.get())

    # Обчислення суми чайових
    tip_amount = bill_amount * tip_percentage / 100

    # Обчислення внеску кожної особи в рахунок
    bill_contribution = bill_amount / number_of_people

    # Обчислення внеску кожної особи в чайові
    tip_contribution = tip_amount / number_of_people

    # Обчислення загального внеску кожної особи
    total_contribution = bill_contribution + tip_contribution

    # Створення рядка для виведення результату
    output = f'Рахунок на особу: {bill_contribution} \n Чайові на особу: {tip_contribution} \n Загалом на особу: {total_contribution}'

    # Створення мітки для виведення результату
    tk.Label(text=output).pack()

    # Оновлення вікна, щоб відобразити зміни
    window.update()

Код у функції вище детально пояснено в коментарях.

Прив’язка обробника подій до кнопки

Далі ми прив’язуємо обробник подій до події натискання кнопки. Подія натискання кнопки у Tkinter представляється рядком ‘<Button-1>’. Для прив’язки події до обробника подій ми використовуємо метод bind кнопки. Додайте цей код під визначенням функції:

btn_enter.bind('<Button-1>', handle_click)
btn_enter.pack()

Нарешті, щоб вікно залишалося відкритим, ми викликаємо метод mainloop об’єкта вікна.

window.mainloop()

І все готово!

Тестування калькулятора чайових та розділення рахунку

Ви можете запустити програму за допомогою команди:

python3 gui.py

Це повинно відкрити вікно, як показано нижче:

Ви можете запустити калькулятор, використовуючи приклад вхідних даних:

Заключні слова

У цьому посібнику ми розробили калькулятор чайових та розділення рахунку двома способами. Перший спосіб використовує термінальний інструмент командного рядка. Другий спосіб – це інструмент з графічним інтерфейсом користувача, використовуючи бібліотеку Tkinter Python. Цей посібник показав вам, як створити простий проект на Python. Якщо вам потрібно оновити або відшліфувати свої навички Python, ось курс Datacamp.

Далі ви можете вивчити, як створити генератор випадкових паролів на Python.