Создание счетов на Python: методы и примеры

Чтобы выставить счет на Python, вы можете использовать различные методы в зависимости от ваших конкретных требований. Вот несколько подходов, которые вы можете рассмотреть:

Метод 1: использование форматирования строк

def create_bill(items):
    total = 0
    bill = "Item\t\tPrice\n"
    bill += "-------------------------\n"
    for item, price in items.items():
        bill += f"{item}\t\t{price}\n"
        total += price
    bill += "-------------------------\n"
    bill += f"Total:\t\t{total}"
    return bill
# Example usage
items = {"Item 1": 10, "Item 2": 20, "Item 3": 15}
bill = create_bill(items)
print(bill)

Метод 2: использование строк шаблона

from string import Template
def create_bill(items):
    total = 0
    bill_template = Template("Item\t\tPrice\n$separator\n$items$separator\nTotal:\t\t$total")
    separator = "-" * 25 + "\n"
    item_template = Template("$item\t\t$price\n")

    items_str = ""
    for item, price in items.items():
        items_str += item_template.substitute(item=item, price=price)
        total += price

    bill = bill_template.substitute(separator=separator, items=items_str, total=total)
    return bill
# Example usage
items = {"Item 1": 10, "Item 2": 20, "Item 3": 15}
bill = create_bill(items)
print(bill)

Метод 3: использование внешних библиотек
Существуют также внешние библиотеки, которые могут помочь в создании счетов, например ReportLab, FPDF и PyFPDF. Эти библиотеки предоставляют более продвинутые функции, такие как создание счетов в формате PDF с настраиваемым форматированием, шрифтами и изображениями. Вот пример использования библиотеки PyFPDF:

from fpdf import FPDF
class Bill(FPDF):
    def header(self):
        self.set_font("Arial", "B", 12)
        self.cell(0, 10, "My Store - Bill", ln=True, align="C")
        self.ln(5)
    def footer(self):
        self.set_y(-15)
        self.set_font("Arial", "I", 8)
        self.cell(0, 10, f"Page {self.page_no()}", 0, 0, "C")
    def create_bill(self, items):
        total = 0
        self.set_font("Arial", "", 10)
        self.cell(30, 10, "Item", 1)
        self.cell(30, 10, "Price", 1)
        self.ln()
        for item, price in items.items():
            self.cell(30, 10, item, 1)
            self.cell(30, 10, str(price), 1)
            self.ln()
            total += price
        self.cell(30, 10, "Total", 1)
        self.cell(30, 10, str(total), 1)

    def save_bill(self, filename):
        self.output(filename)
# Example usage
items = {"Item 1": 10, "Item 2": 20, "Item 3": 15}
bill = Bill()
bill.add_page()
bill.create_bill(items)
bill.save_bill("bill.pdf")

Обратите внимание, что внешние библиотеки, упомянутые в методе 3, могут потребовать установки с помощью pip, прежде чем вы сможете их использовать.