commit 2c62754b2ed015364305466379b5c54545f4937c Author: stud203989 Date: Fri Mar 27 17:41:45 2026 +0300 Да diff --git a/45678.py b/45678.py new file mode 100644 index 0000000..2b9a98c --- /dev/null +++ b/45678.py @@ -0,0 +1,212 @@ +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() diff --git a/README.md b/README.md new file mode 100644 index 0000000..ea30977 Binary files /dev/null and b/README.md differ diff --git a/books.txt b/books.txt new file mode 100644 index 0000000..a468347 --- /dev/null +++ b/books.txt @@ -0,0 +1,19 @@ + +Война и мир|Роман|800|15|2026-01-03 +Преступление и наказание|Роман|650|10|2026-01-03 +Бесы|Философия|1200|25|2026-01-03 +Солярис|Фэнтези|900|30|2026-01-03 +1984|Антиутопия|700|8|1984-01-03 +Изучаем Python|Программирование|1100|20|2026-01-03 +Мастер и Маргарита|Роман|750|12|2026-01-03 +Властелин колец|Фэнтези|1500|5|2026-03-25 +Python|Программирование|1800|7|2026-04-01 +Три товарища|Роман|600|9|20246-04-10 +Дюна|Фантастика|950|11|2004-04-15 +Автостопом по галактике|Фантастика|850|14|2034-04-20 +В поисках утраченного времени|Роман|1200|8|2074-05-01 +Благоволительницы|Роман|750|12|2014-05-05 +Книга мертвых|Автобиография|900|6|2094-05-10 +Символические образы|Философия|1100|5|1024-05-15 +Это я - Эдичка|Роман|500|4|2051-05-20 +Психологическая топология пути|Философия|1300|7|3213-05-25