import datetime # Функция для загрузки данных из файла def load_sales(filename): sales = [] try: file = open(filename, 'r', encoding='utf-8') for line in file: line = line.strip() if line: parts = line.split('|') if len(parts) == 5: sale = { "title": parts[0], "genre": parts[1], "price": int(parts[2]), "quantity": int(parts[3]), "date": parts[4] } sales.append(sale) file.close() except: return [] return sales # Считаем сколько денег заработали def total_revenue(sales): total = 0 for sale in sales: money = sale["price"] * sale["quantity"] total = total + money return total # Считаем сколько всего книг продали def total_books_sold(sales): total = 0 for sale in sales: total = total + sale["quantity"] return total # Средняя цена книги def avg_price(sales): if len(sales) == 0: return 0 summa = 0 for sale in sales: summa = summa + sale["price"] return summa / len(sales) # Сколько книг продали по каждому жанру def genre_stats(sales): stats = {} for sale in sales: genre = sale["genre"] kolvo = sale["quantity"] if genre in stats: stats[genre] = stats[genre] + kolvo else: stats[genre] = kolvo return stats # Какая книга продалась лучше всех def top_book(sales): if len(sales) == 0: return "Нет данных" knigi = {} for sale in sales: name = sale["title"] kolvo = sale["quantity"] if name in knigi: knigi[name] = knigi[name] + kolvo else: knigi[name] = kolvo luchshaya = "" max_kolvo = -1 for name in knigi: if knigi[name] > max_kolvo: max_kolvo = knigi[name] luchshaya = name return luchshaya # Какая книга продалась хуже всех def worst_book(sales): if len(sales) == 0: return "Нет данных" knigi = {} for sale in sales: name = sale["title"] kolvo = sale["quantity"] if name in knigi: knigi[name] = knigi[name] + kolvo else: knigi[name] = kolvo hudshaya = "" min_kolvo = 999999999 for name in knigi: if knigi[name] < min_kolvo: min_kolvo = knigi[name] hudshaya = name return hudshaya # Ищем книги по слову в названии def find_by_title(sales, keyword): result = [] keyword = keyword.lower() for sale in sales: title = sale["title"] if keyword in title.lower(): if title not in result: result.append(title) return result # Считаем выручку по месяцам def sales_by_month(sales): months = {} for sale in sales: month = sale["date"][:7] money = sale["price"] * sale["quantity"] if month in months: months[month] = months[month] + money else: months[month] = money return months # Ищем дорогие книги def expensive_books(sales, min_price): result = [] for sale in sales: if sale["price"] > min_price: if sale["title"] not in result: result.append(sale["title"]) return result # Главная функция def main(): # Текущая дата now = datetime.datetime.now() print("=" * 50) print("ОТЧЕТ ПО ПРОДАЖАМ КНИЖНОГО МАГАЗИНА") print("Дата: " + str(now.day) + "." + str(now.month) + "." + str(now.year)) print("=" * 50) # Загружаем данные sales = load_sales("books.txt") if sales == []: print("Ошибка: файл books.txt не найден") return # Выводим информацию print("\n1. ОБЩАЯ ВЫРУЧКА") print(" " + str(total_revenue(sales)) + " рублей") print("\n2. ВСЕГО ПРОДАНО КНИГ") print(" " + str(total_books_sold(sales)) + " штук") print("\n3. СРЕДНЯЯ ЦЕНА КНИГИ") print(" " + str(round(avg_price(sales), 2)) + " рублей") print("\n4. СТАТИСТИКА ПО ЖАНРАМ") stats = genre_stats(sales) for genre in stats: print(" " + genre + ": " + str(stats[genre]) + " шт") print("\n5. САМАЯ ПРОДАВАЕМАЯ КНИГА") print(" " + top_book(sales)) print("\n6. САМАЯ НЕПРОДАВАЕМАЯ КНИГА") print(" " + worst_book(sales)) print("\n7. КНИГИ СО СЛОВОМ 'PYTHON'") python_books = find_by_title(sales, "Python") if python_books: for book in python_books: print(" " + book) else: print(" Не найдено") print("\n8. ВЫРУЧКА ПО МЕСЯЦАМ") months = sales_by_month(sales) for month in sorted(months.keys()): print(" " + month + ": " + str(months[month]) + " рублей") print("\n9. КНИГИ ДОРОЖЕ 1000 РУБЛЕЙ") expensive = expensive_books(sales, 1000) if expensive: for book in expensive: print(" " + book) else: print(" Не найдено") print("\n" + "=" * 50) print("Отчет сформирован") # Запускаем программу if __name__ == "__main__": main()