This commit is contained in:
Никита Брилин 2026-03-27 17:41:45 +03:00
commit 2c62754b2e
3 changed files with 231 additions and 0 deletions

212
45678.py Normal file
View File

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

BIN
README.md Normal file

Binary file not shown.

19
books.txt Normal file
View File

@ -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