Да
This commit is contained in:
commit
2c62754b2e
212
45678.py
Normal file
212
45678.py
Normal 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()
|
||||||
19
books.txt
Normal file
19
books.txt
Normal 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
|
||||||
Loading…
Reference in New Issue
Block a user