diff --git a/for_challenges.py b/for_challenges.py index 997754da..078adc36 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,12 @@ ['Вася', 'Маша', 'Саша', 'Женя'], ['Оля', 'Петя', 'Гриша'], ] -# ??? + +for group in enumerate(groups, start=1): + print(f'Группа {group[0]}: {len(group[1])} ученика') + + + # Задание 5 @@ -54,4 +66,6 @@ ['Оля', 'Петя', 'Гриша'], ['Вася', 'Маша', 'Саша', 'Женя'], ] -# ??? \ No newline at end of file + +for group in enumerate(groups, start=1): + print(f'Группа {group[0]}: {", ".join(group[1])}') \ No newline at end of file diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 96062ebc..2969751b 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,15 +52,20 @@ {'first_name': 'Маша'}, {'first_name': 'Маша'}, {'first_name': 'Оля'}, - ],[ # это – третий класс + ], [ # это – третий класс {'first_name': 'Женя'}, {'first_name': 'Петя'}, {'first_name': 'Женя'}, {'first_name': 'Саша'}, ], ] -# ??? +from collections import Counter +count = 0 +for klass in school_students: + most_common_name = Counter(name['first_name'] for name in school_students[count]).most_common(1) + print(f'Самое частое имя в классе {count + 1}: {most_common_name[0][0]}') + count += 1 # Задание 4 # Для каждого класса нужно вывести количество девочек и мальчиков в нём. @@ -72,9 +85,21 @@ 'Миша': True, 'Даша': False, } -# ??? +def mens_count(): + return [is_male[men_person['first_name']] for men_person in klass['students']].count(True) + + +def womens_count(): + return [is_male[women_person['first_name']] for women_person in klass['students']].count(False) + + +for klass in school: + print( + f"Класс {klass['class']}: мальчики {mens_count()} " + f"девочки {womens_count()}") + # Задание 5 # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков # Пример вывода: @@ -82,7 +107,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 +116,8 @@ 'Олег': True, 'Миша': True, } -# ??? - +for klass in school: + if mens_count() > womens_count(): + print(f"Больше всего мальчиков в классе {klass['class']}") + else: + print(f"Больше всего девочек в классе {klass['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