1zadaniepraktiki/45678.py
2026-03-27 17:41:45 +03:00

213 lines
5.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()