-
Notifications
You must be signed in to change notification settings - Fork 242
/
Copy pathfor_dict_challenges_bonus.py
70 lines (59 loc) · 3.25 KB
/
for_dict_challenges_bonus.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
Пожалуйста, приступайте к этой задаче после того, как вы сделали и получили ревью ко всем остальным задачам
в этом репозитории. Она значительно сложнее.
Есть набор сообщений из чата в следующем формате:
```
messages = [
{
"id": "efadb781-9b04-4aad-9afe-e79faef8cffb",
"sent_at": datetime.datetime(2022, 10, 11, 23, 11, 11, 721),
"sent_by": 46, # id пользователя-отправителя
"reply_for": "7b22ae19-6c58-443e-b138-e22784878581", # id сообщение, на которое это сообщение является ответом (может быть None)
"seen_by": [26, 91, 71], # идентификаторы пользователей, которые видели это сообщение
"text": "А когда ревью будет?",
}
]
```
Так же есть функция `generate_chat_history`, которая вернёт список из большого количества таких сообщений.
Установите библиотеку lorem, чтобы она работала.
Нужно:
1. Вывести айди пользователя, который написал больше всех сообщений.
2. Вывести айди пользователя, на сообщения которого больше всего отвечали.
3. Вывести айди пользователей, сообщения которых видело больше всего уникальных пользователей.
4. Определить, когда в чате больше всего сообщений: утром (до 12 часов), днём (12-18 часов) или вечером (после 18 часов).
5. Вывести идентификаторы сообщений, который стали началом для самых длинных тредов (цепочек ответов).
Весь код стоит разбить на логические части с помощью функций.
"""
import random
import uuid
import datetime
import lorem
def generate_chat_history():
messages_amount = random.randint(200, 1000)
users_ids = list(
{random.randint(1, 10000) for _ in range(random.randint(5, 20))}
)
sent_at = datetime.datetime.now() - datetime.timedelta(days=100)
messages = []
for _ in range(messages_amount):
sent_at += datetime.timedelta(minutes=random.randint(0, 240))
messages.append({
"id": uuid.uuid4(),
"sent_at": sent_at,
"sent_by": random.choice(users_ids),
"reply_for": random.choice(
[
None,
(
random.choice([m["id"] for m in messages])
if messages else None
),
],
),
"seen_by": random.sample(users_ids,
random.randint(1, len(users_ids))),
"text": lorem.sentence(),
})
return messages
if __name__ == "__main__":
print(generate_chat_history())