Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
38 changes: 31 additions & 7 deletions for_challenges.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# Необходимо вывести имена всех учеников из списка с новой строки

names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???
for name in names:
print(name)


# Задание 2
Expand All @@ -12,7 +13,8 @@
# Петя: 4

names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???
for i in range(0, len(names)):
print(f"{names[i]}: {len(names[i])}")


# Задание 3
Expand All @@ -25,7 +27,13 @@
'Маша': False,
}
names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???
for name in names:
sex = is_male.get(name)
if sex == True:
sex = 'мужской'
else:
sex = 'женский'
print(f"{name}: {sex}")


# Задание 4
Expand All @@ -40,9 +48,19 @@
['Вася', 'Маша', 'Саша', 'Женя'],
['Оля', 'Петя', 'Гриша'],
]
# ???


n = len(groups)
print(f"Всего {n} группы.")
for i in range(0, n):
group = i + 1
number_of_people = len(groups[i])
print(f"Группа {group}: {number_of_people} ученика")
group_number = 1
"""
for group in groups:
number_of_people = len(group)
print(f"Группа {group_number}: {number_of_people} ученика")
group_number += 1
"""
# Задание 5
# Для каждой пары учеников нужно с новой строки перечислить учеников, которые в неё входят
# Пример вывода:
Expand All @@ -54,4 +72,10 @@
['Оля', 'Петя', 'Гриша'],
['Вася', 'Маша', 'Саша', 'Женя'],
]
# ???

n = len(groups)
for i in range(0, n):
group = i + 1
print(f"Группа {group}:", end=' ')
group_content = ','.join(groups[i])
print(group_content)
31 changes: 27 additions & 4 deletions for_dict_challenges.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@

from collections import Counter

# Задание 1
# Дан список учеников, нужно посчитать количество повторений каждого имени ученика
# Пример вывода:
Expand All @@ -12,21 +15,41 @@
{'first_name': 'Маша'},
{'first_name': 'Петя'},
]
# ???
new_list = []
for i in range(0, len(students)):
name = students[i]['first_name']
new_list.append(name)
new_dict = list(set(new_list))

for i in range(len(new_dict)):
print(f"{new_dict[i]}: {new_list.count(new_dict[i])}")

# Задание 2
# Дан список учеников, нужно вывести самое часто повторящееся имя
# Пример вывода:
# Самое частое имя среди учеников: Маша
students = [
students_2 = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
]
# ???
lists = []
names_count = {}
for i in range(0, len(students_2)):
name = students_2[i]['first_name']
print(name)
lists.append(name)
print(lists)



for i in range(len(lists)):
names_count[lists[i]] = lists.count(lists[i])
print(names_count)
max_key = max(names_count, key = names_count.get)
print(f"Самое частое имя среди учеников: {max_key}")


# Задание 3
Expand All @@ -51,7 +74,7 @@
{'first_name': 'Саша'},
],
]
# ???
print()


# Задание 4
Expand Down
101 changes: 99 additions & 2 deletions for_dict_challenges_bonus.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@
import random
import uuid
import datetime

from collections import Counter
import lorem
from itertools import groupby


def generate_chat_history():
Expand Down Expand Up @@ -65,6 +66,102 @@ def generate_chat_history():
})
return messages

def get_max_messages(messages): #функция считает айди пользователя, который написал больше всех сообщений
"""
создаем пустой список и словарь. В список собираем все id пользователей,
в словаре в виде ключ:значение храним id пользователя и сколько раз он написал сообщение: {id:id_count}
"""
"""
lists = []
user_id = {}

for i in range(0, len(messages)):
id = messages[i]['sent_by'] #пробигаемся по списку словарей с сообщениями и "выдергиваем" из словарей id пользователя
lists.append(id) #добавляем id пользователя в список

for i in range(0, len(lists)):
user_id[lists[i]] = lists.count(lists[i]) #теперь пробигаемся по списку с id и считаем сколько раз каждый id встретился в списке
max_key = max(user_id, key = user_id.get)
return max_key
"""
sent_by_counts = Counter(message['sent_by'] for message in messages)
most_messages_user = sent_by_counts.most_common(1)
if most_messages_user:
user_id, count = most_messages_user[0]
return user_id, count

#print(f'Пользователь с id {user_id} отправил больше всего сообщений: {count}.')
else:
print('Нет отправленных сообщений.')


def printing(messages):
for message in messages:
print(message, end='\n*********************************************************************************************************************\n')


def get_id_of_max_reply_message(threads, messages):
for message in messages:
if threads == message['id']:
return message['sent_by']

def get_user_id_seen_by_max_users(messages):
max_seen_by = 0
for message in messages:
new_message_seen_by = [i for i, _ in groupby(message['seen_by'])]
seen_by = len(new_message_seen_by)
if seen_by > max_seen_by:
max_seen_by = seen_by
id = message['sent_by']
return max_seen_by, id

def max_time_for_messages(messages):
before_12 = 0
between_12_18 = 0
after_18 = 0

for message in messages:
time = message['sent_at']
if time.hour <=12:
before_12 += 1
elif time.hour >=12 and time.hour <=18:
between_12_18 += 1
else:
after_18 += 1

if between_12_18 < before_12 > after_18:
return "больше всего сообщений утром (до 12)"
elif before_12 < between_12_18 > after_18:
return 'больше всего сообщений днем (с 12 до 18)'
else:
return 'больше всего сообщений вечером (после 18)'



def get_max_threds(messages):
lists =[]
message_id = {}

for i in range(0, len(messages)):
id = messages[i]['reply_for']
lists.append(id)

for i in range(0, len(lists)):
message_id[lists[i]] = lists.count(lists[i])

sorted_message_id = sorted(message_id.items(), key=lambda item: item[1], reverse=True)
if sorted_message_id[0][0] == None:
return sorted_message_id[1][0]
else:
return sorted_message_id[0][0]


if __name__ == "__main__":
print(generate_chat_history())
messages = generate_chat_history()
printing(messages)
print(f"айди пользователя с максимальным числом отправленных сообшений:{get_max_messages(messages)[0]}, число сообщений от пользователя: {get_max_messages(messages)[1]}",
f"айди пользователя на сообщение которого больше всего отвечали: {get_id_of_max_reply_message(get_max_threds(messages), messages)}",
f"айди пользователя, сообщения которого видело больше всего уникальных пользователей:{get_user_id_seen_by_max_users(messages)[1]}",
max_time_for_messages(messages),
f"идентификатор сообщений, который стал началом для самых длинных тредов (цепочек ответов):{get_max_threds(messages)}", sep='\n')

16 changes: 10 additions & 6 deletions string_challenges.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
# Вывести последнюю букву в слове
word = 'Архангельск'
# ???
print(word[-1])


# Вывести количество букв "а" в слове
word = 'Архангельск'
# ???
print(word.count('а'))


# Вывести количество гласных букв в слове
word = 'Архангельск'
# ???
count = sum(1 for letter in word.lower() if letter in ("а", "е", "ё", "и", "о", "у", "ы", "э", "ю", "я"))
print(count)


# Вывести количество слов в предложении
sentence = 'Мы приехали в гости'
# ???
words = list(sentence.split(" "))
print(len(words))


# Вывести первую букву каждого слова на отдельной строке
sentence = 'Мы приехали в гости'
# ???
words = list(sentence.split(" "))
for i in range(0, len(words)):
print(words[i][0])


# Вывести усреднённую длину слова в предложении
sentence = 'Мы приехали в гости'
# ???
print(len(words)/len(sentence))
Loading