diff --git a/for_challenges.py b/for_challenges.py index 997754da..9a7ed5bb 100644 --- a/for_challenges.py +++ b/for_challenges.py @@ -2,7 +2,8 @@ # Необходимо вывести имена всех учеников из списка с новой строки names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +for name in names: + print(name) # Задание 2 @@ -12,7 +13,8 @@ # Петя: 4 names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +for name in names: + print(f'{name}: {len(name)}') # Задание 3 @@ -25,7 +27,12 @@ 'Маша': False, } names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +for name in names: + if is_male.get(name) == True: + print(f'{name} пол мужской') + else: + print(f'{name} пол женский') + # Задание 4 @@ -40,7 +47,11 @@ ['Вася', 'Маша', 'Саша', 'Женя'], ['Оля', 'Петя', 'Гриша'], ] -# ??? + +for group_number, group in enumerate(groups, start=1): + print(f'Группа {group_number}: {len(group)} ученика') + + # Задание 5 @@ -54,4 +65,6 @@ ['Оля', 'Петя', 'Гриша'], ['Вася', 'Маша', 'Саша', 'Женя'], ] -# ??? \ No newline at end of file + +for group_number, group in enumerate(groups, start=1): + print(f'Группа {group_number}: {", ".join(group)}') \ No newline at end of file diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 96062ebc..209acb51 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -12,8 +12,13 @@ {'first_name': 'Маша'}, {'first_name': 'Петя'}, ] -# ??? +from collections import Counter + +list_students = [name['first_name'] for name in students] +print(list_students) +for name, number in Counter(list_students).items(): + print(f'{name}: {number}') # Задание 2 # Дан список учеников, нужно вывести самое часто повторящееся имя @@ -26,8 +31,11 @@ {'first_name': 'Маша'}, {'first_name': 'Оля'}, ] -# ??? +from collections import Counter +student_names = (name['first_name'] for name in students) +most_common_name = Counter(student_names).most_common(1) +print(f'Самое частое имя среди учеников: {most_common_name[0][0]}') # Задание 3 # Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе. @@ -44,14 +52,18 @@ {'first_name': 'Маша'}, {'first_name': 'Маша'}, {'first_name': 'Оля'}, - ],[ # это – третий класс + ], [ # это – третий класс {'first_name': 'Женя'}, {'first_name': 'Петя'}, {'first_name': 'Женя'}, {'first_name': 'Саша'}, ], ] -# ??? +from collections import Counter + +for number_of_class, klass in enumerate(school_students,start=1): + most_common_name = Counter(name['first_name'] for name in klass).most_common(1) + print(f'Самое частое имя в классе {number_of_class}: {most_common_name[0][0]}') # Задание 4 @@ -72,9 +84,21 @@ 'Миша': True, 'Даша': False, } -# ??? +def mens_count(): + return [is_male[men_person['first_name']] for men_person in klass_name['students']].count(True) + + +def womens_count(): + return [is_male[women_person['first_name']] for women_person in klass_name['students']].count(False) + + +for klass_name in school: + print( + f"Класс {klass_name['class']}: мальчики {mens_count()} " + f"девочки {womens_count()}") + # Задание 5 # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков # Пример вывода: @@ -82,7 +106,7 @@ # Больше всего девочек в классе 2a school = [ - {'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]}, + {'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}, {'first_name': 'Оля'}]}, {'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]}, ] is_male = { @@ -91,5 +115,8 @@ 'Олег': True, 'Миша': True, } -# ??? - +for klass_name in school: + if mens_count() > womens_count(): + print(f"Больше всего мальчиков в классе {klass_name['class']}") + else: + print(f"Больше всего девочек в классе {klass_name['class']}") diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index 9f35a0a0..62c565ee 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -66,5 +66,30 @@ def generate_chat_history(): return messages +def zadacha(messages): + + from collections import Counter + sum_user = Counter(user['sent_by'] for user in messages).most_common(1) + print(f'Больше всего сообщений написал пользователь ID - {sum_user[0][0]}') + + sum_user = Counter(commentator['reply_for'] for commentator in messages).most_common(2) + print(f'Больше всего ответов - {sum_user[1][0]}') + for id in messages: + if id['id'] == sum_user[1][0]: + print(f"{id['sent_by']} айди пользователя, на сообщения которого больше всего отвечали") + + + new_dict = {} + for message in messages: + if message['sent_by'] not in new_dict: + new_dict[message['sent_by']] = message['seen_by'] + else: + new_dict[message['sent_by']] = new_dict[message['sent_by']] + message['seen_by'] + for key_new_dict, value in new_dict.items(): + print(key_new_dict, len(set(value))) + + + if __name__ == "__main__": print(generate_chat_history()) + zadacha(generate_chat_history()) diff --git a/string_challenges.py b/string_challenges.py index 856add2d..aa648b60 100644 --- a/string_challenges.py +++ b/string_challenges.py @@ -1,28 +1,39 @@ # Вывести последнюю букву в слове word = 'Архангельск' -# ??? +print(word[-1]) + # Вывести количество букв "а" в слове word = 'Архангельск' -# ??? +print(word.lower().count('а')) + + + # Вывести количество гласных букв в слове word = 'Архангельск' -# ??? +vowels = ['а', 'е', 'у', 'ы', 'о', 'э', 'я', 'и', 'ю'] +print(len([letter for letter in word if letter.lower() not in vowels])) + # Вывести количество слов в предложении sentence = 'Мы приехали в гости' -# ??? + +print(len(sentence.split())) # Вывести первую букву каждого слова на отдельной строке sentence = 'Мы приехали в гости' -# ??? +for word in sentence.split(): + print(word[0]) # Вывести усреднённую длину слова в предложении sentence = 'Мы приехали в гости' -# ??? \ No newline at end of file +words = [] +for letter in sentence.split(): + words.append(len(letter)) +print(int(sum(words)/len(sentence.split()))) \ No newline at end of file