diff --git a/for_challenges.py b/for_challenges.py index 997754da..c4bcfd49 100644 --- a/for_challenges.py +++ b/for_challenges.py @@ -2,9 +2,15 @@ # Необходимо вывести имена всех учеников из списка с новой строки names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +def print_names(names): + for name in names: + print(name) + + +print_names(names) + # Задание 2 # Необходимо вывести имена всех учеников из списка, рядом с именем показать количество букв в нём # Пример вывода: @@ -12,9 +18,15 @@ # Петя: 4 names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +def print_names_with_len(names): + for name in names: + print(f"{name}: {len(name)}") + + +print_names_with_len(names) + # Задание 3 # Необходимо вывести имена всех учеников из списка, рядом с именем вывести пол ученика @@ -25,9 +37,19 @@ 'Маша': False, } names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +def print_name_with_gender(names): + for name in names: + if is_male.get(name): + gender = "мужской" + else: + gender = "женский" + print(f"{name}: {gender}") + + +print_name_with_gender(names) + # Задание 4 # Даны группу учеников. Нужно вывести количество групп и для каждой группы – количество учеников в ней # Пример вывода: @@ -40,9 +62,15 @@ ['Вася', 'Маша', 'Саша', 'Женя'], ['Оля', 'Петя', 'Гриша'], ] -# ??? +def print_groups_with_student(groups): + for group in groups: + print(f"Группа {groups.index(group) + 1}: {len(group)} ученика") + + +print_groups_with_student(groups) + # Задание 5 # Для каждой пары учеников нужно с новой строки перечислить учеников, которые в неё входят # Пример вывода: @@ -54,4 +82,15 @@ ['Оля', 'Петя', 'Гриша'], ['Вася', 'Маша', 'Саша', 'Женя'], ] -# ??? \ No newline at end of file + + +def print_groups_with_names(groups): + for group in groups: + print(f"Группа {groups.index(group) + 1}: {get_names_from_group(group)}") + + +def get_names_from_group(group): + return ", ".join(str(name) for name in group) + + +print_groups_with_names(groups) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index fd86d344..02da501f 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -12,8 +12,14 @@ {'first_name': 'Маша'}, {'first_name': 'Петя'}, ] -# ??? +names = [name["first_name"] for name in students] +# first variant +for name in set(names): + print(f'{name}: {names.count(name)}') +# second variant +for name in list(dict.fromkeys(names)): + print(f"{name}: {names.count(name)}") # Задание 2 # Дан список учеников, нужно вывести самое часто повторящееся имя @@ -26,8 +32,16 @@ {'first_name': 'Маша'}, {'first_name': 'Оля'}, ] -# ??? +names = [name["first_name"] for name in students] +famous_count_name = 0 +famous_name = "" +for name in names: + if names.count(name) > famous_count_name: + famous_count_name = names.count(name) + famous_name = name + +print(f"Самое частое имя среди учеников: {famous_name}") # Задание 3 # Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе. @@ -44,7 +58,7 @@ {'first_name': 'Маша'}, {'first_name': 'Маша'}, {'first_name': 'Оля'}, - ],[ # это – третий класс + ], [ # это – третий класс {'first_name': 'Женя'}, {'first_name': 'Петя'}, {'first_name': 'Женя'}, @@ -52,7 +66,22 @@ ], ] # ??? +class_count = len(school_students) + +def get_famous_name(names): + famous_count_name = 0 + famous_name = "" + for name in names: + if names.count(name) > famous_count_name: + famous_count_name = names.count(name) + famous_name = name + return famous_name + + +for class_room in range(class_count): + names = [name["first_name"] for name in school_students[class_room]] + print(f"Самое частое имя в классе {class_room + 1}: {get_famous_name(names)}") # Задание 4 # Для каждого класса нужно вывести количество девочек и мальчиков в нём. @@ -72,8 +101,16 @@ 'Миша': True, 'Даша': False, } -# ??? +for class_room in school: + male = 0 + female = 0 + for student in class_room['students']: + if is_male.get(student['first_name']): + male += 1 + else: + female += 1 + print(f"Класс {class_room['class']}: девочки {female}, мальчики {male}") # Задание 5 # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков @@ -91,5 +128,24 @@ 'Олег': True, 'Миша': True, } -# ??? +max_male_count = 0 +max_male_class_room = "" +max_female_count = 0 +max_female_class_room = "" +for class_room in school: + male = 0 + female = 0 + for student in class_room['students']: + if is_male.get(student['first_name']): + male += 1 + else: + female += 1 + if male > max_male_count: + max_male_count = male + max_male_class_room = class_room['class'] + if female > max_female_count: + max_female_count = female + max_female_class_room = class_room['class'] +print(f"Больше всего мальчиков в классе {max_male_class_room}") +print(f"Больше всего девочек в классе {max_female_class_room}") diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index 9f35a0a0..b6368695 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -66,5 +66,60 @@ def generate_chat_history(): return messages +def collect_tasks(): + find_user_id_with_max_messages() + find_user_id_with_max_replies() + most_watched_ids() + + +def find_user_id_with_max_messages(): + max_count_messages = 0 + user_id_with_max_messages = "" + user_id_list = [] + for message in generate_chat_history(): + user_id_list.append(message.get("sent_by")) + for user in user_id_list: + if user_id_list.count(user) > max_count_messages: + max_count_messages = user_id_list.count(user) + user_id_with_max_messages = user + print( + f"айди пользователя, который написал больше всех сообщений: {user_id_with_max_messages}, количество сообщений: {max_count_messages}") + + +def find_user_id_with_max_replies(): + max_count_id = 0 + replies_id = "" + replies_id_list = [] + messages = generate_chat_history() + user_id_with_max_replies = "" + + for message in messages: + if message.get("reply_for") is not None: + replies_id_list.append(str(message.get("reply_for"))) + # print(replies_id_list) + for message_id in replies_id_list: + if replies_id_list.count(message_id) > max_count_id: + max_count_id = replies_id_list.count(message_id) + replies_id = message_id + for m in messages: + if str(m.get("id")) == replies_id: + user_id_with_max_replies = m.get("sent_by") + print(f"айди пользователя, на сообщения которого больше всего отвечали: {user_id_with_max_replies}") + + +def most_watched_ids(): + max_id_size = 0 + max_id_list = [] + user_id_list = [] + messages = generate_chat_history() + for message in messages: + if len(message.get("seen_by")) > max_id_size: + max_id_size = len(message.get("seen_by")) + max_id_list.clear() + max_id_list = message.get("seen_by") + print( + f"айди пользователей, сообщения которых видело больше всего уникальных пользователей: {', '.join(str(uid) for uid in max_id_list)}") + + if __name__ == "__main__": - print(generate_chat_history()) + collect_tasks() diff --git a/string_challenges.py b/string_challenges.py index 856add2d..2326b3d7 100644 --- a/string_challenges.py +++ b/string_challenges.py @@ -1,28 +1,30 @@ # Вывести последнюю букву в слове word = 'Архангельск' -# ??? - +print(word[-1]) # Вывести количество букв "а" в слове word = 'Архангельск' -# ??? - +print(word.lower().count("а")) # Вывести количество гласных букв в слове word = 'Архангельск' -# ??? - +vowels = ["а", "у", "о", "ы", "и", "э", "я", "ю", "ё", "е"] +vowels_count = 0 +for ch in word.lower(): + if ch in vowels: + vowels_count += 1 +print(f"количество гласных букв в слове {word} - {vowels_count}") # Вывести количество слов в предложении sentence = 'Мы приехали в гости' -# ??? - +print(len(sentence.split(" "))) # Вывести первую букву каждого слова на отдельной строке sentence = 'Мы приехали в гости' -# ??? - +for w in sentence.split(" "): + print(w.capitalize()) # Вывести усреднённую длину слова в предложении sentence = 'Мы приехали в гости' -# ??? \ No newline at end of file +words = sentence.split() +print(int(sum(len(i) for i in words) / len(words)))