From 1c11577eab6d2fb9b265ab8d5c21f7b528bf2d4b Mon Sep 17 00:00:00 2001 From: El1seius Date: Fri, 26 May 2023 02:22:59 +0300 Subject: [PATCH 01/14] Done --- for_challenges.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/for_challenges.py b/for_challenges.py index 997754da..77992049 100644 --- a/for_challenges.py +++ b/for_challenges.py @@ -2,7 +2,10 @@ # Необходимо вывести имена всех учеников из списка с новой строки names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? + + +for user in names: + print(user) # Задание 2 @@ -12,7 +15,10 @@ # Петя: 4 names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? + + +for user in names: + print(f'{user}: {len(user)}') # Задание 3 @@ -25,7 +31,13 @@ 'Маша': False, } names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? + + +for user in names: + if is_male.get(user): + print(f'{user} - пол мужской') + else: + print(f'{user} - пол женский') # Задание 4 @@ -40,7 +52,15 @@ ['Вася', 'Маша', 'Саша', 'Женя'], ['Оля', 'Петя', 'Гриша'], ] -# ??? + + +print(f'Всего {len(groups)} группы') + + +count = 1 +for group in groups: + print(f'Группа {count}: {len(group)} ученика') + count = count + 1 # Задание 5 @@ -54,4 +74,9 @@ ['Оля', 'Петя', 'Гриша'], ['Вася', 'Маша', 'Саша', 'Женя'], ] -# ??? \ No newline at end of file + + +count = 1 +for group in groups: + print(f'Группа {count}: {group}') + count = count + 1 \ No newline at end of file From f9eded54474cac577177147d3c844f230c1dcdde Mon Sep 17 00:00:00 2001 From: El1seius Date: Mon, 29 May 2023 21:22:55 +0300 Subject: [PATCH 02/14] Done --- for_challenges.py | 12 ++++-------- for_dict_challenges.py | 42 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/for_challenges.py b/for_challenges.py index 77992049..3411c35f 100644 --- a/for_challenges.py +++ b/for_challenges.py @@ -57,10 +57,8 @@ print(f'Всего {len(groups)} группы') -count = 1 -for group in groups: - print(f'Группа {count}: {len(group)} ученика') - count = count + 1 +for group_num, group in enumerate(groups, start =1): + print(f'Группа {group_num}: {len(group)} ученика') # Задание 5 @@ -76,7 +74,5 @@ ] -count = 1 -for group in groups: - print(f'Группа {count}: {group}') - count = count + 1 \ No newline at end of file +for group_num, group in enumerate(groups, start =1): + print(f'Группа {group_num}: {group}') \ No newline at end of file diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 96062ebc..485a3c14 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -5,6 +5,7 @@ # Маша: 2 # Петя: 2 + students = [ {'first_name': 'Вася'}, {'first_name': 'Петя'}, @@ -12,7 +13,21 @@ {'first_name': 'Маша'}, {'first_name': 'Петя'}, ] -# ??? + + +new_students = {} + + +for list in students: + stud_name = list['first_name'] + if stud_name in new_students: + new_students[stud_name] = new_students.get(stud_name) + 1 + else: + new_students[stud_name] = 1 + + +print(new_students) + # Задание 2 @@ -25,8 +40,31 @@ {'first_name': 'Маша'}, {'first_name': 'Маша'}, {'first_name': 'Оля'}, + {'first_name': 'Петя'}, + {'first_name': 'Маша'}, ] -# ??? + + +new_students = {} + + +for list in students: + stud_name = list['first_name'] + if stud_name in new_students: + new_students[stud_name] = new_students.get(stud_name) + 1 + else: + new_students[stud_name] = 1 + +print(new_students) + +common = [] + +for user in new_students: + common.append(new_students[user]) + +print(max(common)) + +print(f'Самое частое имя среди учеников: {}') # Задание 3 From 9b5cba5b8698679a0f9bba396f983953b8f97623 Mon Sep 17 00:00:00 2001 From: El1seius Date: Tue, 30 May 2023 01:00:57 +0300 Subject: [PATCH 03/14] Done --- for_dict_challenges.py | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 485a3c14..14b6c2be 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -25,8 +25,8 @@ else: new_students[stud_name] = 1 - -print(new_students) +for name, recur in new_students.items(): + print(name, recur) @@ -40,8 +40,9 @@ {'first_name': 'Маша'}, {'first_name': 'Маша'}, {'first_name': 'Оля'}, + {'first_name': 'Вася'}, + {'first_name': 'Петя'}, {'first_name': 'Петя'}, - {'first_name': 'Маша'}, ] @@ -55,16 +56,17 @@ else: new_students[stud_name] = 1 -print(new_students) -common = [] +name_recur = 0 + for user in new_students: - common.append(new_students[user]) + if new_students[user] > name_recur: + name_recur = new_students[user] + user_names = user -print(max(common)) -print(f'Самое частое имя среди учеников: {}') +print(f'Самое частое имя среди учеников: {user_names}') # Задание 3 @@ -73,6 +75,7 @@ # Самое частое имя в классе 1: Вася # Самое частое имя в классе 2: Маша + school_students = [ [ # это – первый класс {'first_name': 'Вася'}, @@ -89,7 +92,28 @@ {'first_name': 'Саша'}, ], ] -# ??? + + +for one_class in school_students: + class_students = {} + for dict in one_class: + name_class = dict['first_name'] + if name_class in class_students: + class_students[name_class] = class_students.get(name_class) + 1 + else: + class_students[name_class] = 1 + print(class_students) + + name_recur = 0 + + for name_stud in class_students: + if class_students[name_stud] > name_recur: + name_recur = class_students[name_stud] + print(f'Самое частое имя в классе №: {name_stud}') # не понимаю как прилично здесь вывести номер класса + +# for class_num, class_students in enumerate(class_students, start=1): +# print(f'Самое частое имя в классе {class_num}: {name_stud}') + # Задание 4 From e5e42f94f51ac4677d046eb5d6c17f7352853c65 Mon Sep 17 00:00:00 2001 From: El1seius Date: Tue, 30 May 2023 13:07:24 +0300 Subject: [PATCH 04/14] Correction --- for_challenges.py | 6 ++--- for_dict_challenges.py | 55 +++++++++++++++++------------------------- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/for_challenges.py b/for_challenges.py index 3411c35f..7ec5c370 100644 --- a/for_challenges.py +++ b/for_challenges.py @@ -73,6 +73,6 @@ ['Вася', 'Маша', 'Саша', 'Женя'], ] - -for group_num, group in enumerate(groups, start =1): - print(f'Группа {group_num}: {group}') \ No newline at end of file +for group_num, entrance_group in enumerate(groups, start =1): + conclusion = ', '.join(entrance_group) + print(f'Группа {group_num}: {conclusion}') \ No newline at end of file diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 14b6c2be..36d0b7dc 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -15,17 +15,17 @@ ] -new_students = {} +repeat_students = {} -for list in students: - stud_name = list['first_name'] - if stud_name in new_students: - new_students[stud_name] = new_students.get(stud_name) + 1 +for inform_student in students: + stud_name = inform_student['first_name'] + if stud_name in repeat_students: + repeat_students[stud_name] = repeat_students.get(stud_name) + 1 else: - new_students[stud_name] = 1 + repeat_students[stud_name] = 1 -for name, recur in new_students.items(): +for name, recur in repeat_students.items(): print(name, recur) @@ -46,27 +46,21 @@ ] -new_students = {} +repeat_students_2 = {} -for list in students: - stud_name = list['first_name'] - if stud_name in new_students: - new_students[stud_name] = new_students.get(stud_name) + 1 +for inf_student in students: + stud_name = inf_student['first_name'] + if stud_name in repeat_students_2: + repeat_students_2[stud_name] = repeat_students_2.get(stud_name) + 1 else: - new_students[stud_name] = 1 + repeat_students_2[stud_name] = 1 -name_recur = 0 +max_key = max(repeat_students_2, key=repeat_students_2.get) -for user in new_students: - if new_students[user] > name_recur: - name_recur = new_students[user] - user_names = user - - -print(f'Самое частое имя среди учеников: {user_names}') +print(f'Самое частое имя среди учеников: {max_key}') # Задание 3 @@ -93,9 +87,12 @@ ], ] - +count = 0 for one_class in school_students: - class_students = {} + + class_students = {} + count += 1 + for dict in one_class: name_class = dict['first_name'] if name_class in class_students: @@ -104,16 +101,8 @@ class_students[name_class] = 1 print(class_students) - name_recur = 0 - - for name_stud in class_students: - if class_students[name_stud] > name_recur: - name_recur = class_students[name_stud] - print(f'Самое частое имя в классе №: {name_stud}') # не понимаю как прилично здесь вывести номер класса - -# for class_num, class_students in enumerate(class_students, start=1): -# print(f'Самое частое имя в классе {class_num}: {name_stud}') - + max_repeat = max(class_students, key=class_students.get) + print(f'Самое частое имя в классе {count}: {max_repeat}') # Задание 4 From 8a335739b4d57085025d11740c5173b174882d75 Mon Sep 17 00:00:00 2001 From: El1seius Date: Tue, 30 May 2023 15:48:12 +0300 Subject: [PATCH 05/14] Done --- for_dict_challenges.py | 22 +++++++++++----------- string_challenges.py | 27 +++++++++++++++++++++------ 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 36d0b7dc..36d67692 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -20,6 +20,7 @@ for inform_student in students: stud_name = inform_student['first_name'] + print(repeat_students) if stud_name in repeat_students: repeat_students[stud_name] = repeat_students.get(stud_name) + 1 else: @@ -74,8 +75,7 @@ [ # это – первый класс {'first_name': 'Вася'}, {'first_name': 'Вася'}, - ], - [ # это – второй класс + ],[ # это – второй класс {'first_name': 'Маша'}, {'first_name': 'Маша'}, {'first_name': 'Оля'}, @@ -87,22 +87,20 @@ ], ] -count = 0 -for one_class in school_students: - + +for class_num, school_students in enumerate(school_students, start =1): class_students = {} - count += 1 - for dict in one_class: - name_class = dict['first_name'] + for every_class in school_students: + name_class = every_class['first_name'] if name_class in class_students: class_students[name_class] = class_students.get(name_class) + 1 else: class_students[name_class] = 1 - print(class_students) + print(class_students) max_repeat = max(class_students, key=class_students.get) - print(f'Самое частое имя в классе {count}: {max_repeat}') + print(f'Самое частое имя в классе {class_num}: {max_repeat}') # Задание 4 @@ -123,7 +121,9 @@ 'Миша': True, 'Даша': False, } -# ??? + + + # Задание 5 diff --git a/string_challenges.py b/string_challenges.py index 856add2d..15a86740 100644 --- a/string_challenges.py +++ b/string_challenges.py @@ -1,28 +1,43 @@ # Вывести последнюю букву в слове word = 'Архангельск' -# ??? +print(word[-1]) # Вывести количество букв "а" в слове word = 'Архангельск' -# ??? +print(word.count('а')) # Вывести количество гласных букв в слове word = 'Архангельск' -# ??? +vowels = ['у', 'е', 'ы', 'а', 'о', 'э', 'я', 'и', 'ю', 'ё'] +quantity_vowels = 0 +for letter in word.lower(): + if letter in vowels: + quantity_vowels += 1 +print(quantity_vowels) # Вывести количество слов в предложении sentence = 'Мы приехали в гости' -# ??? +print(len(sentence.split(" "))) # Вывести первую букву каждого слова на отдельной строке sentence = 'Мы приехали в гости' -# ??? +sentence_word = sentence.split(" ") +for element in sentence_word: + print(element[0]) # Вывести усреднённую длину слова в предложении sentence = 'Мы приехали в гости' -# ??? \ No newline at end of file +sentence_word = sentence.split(" ") +general_length = 0 +for element in sentence_word: + length = len(element) + general_length += length + +avg_length= general_length / len(sentence_word) +print(avg_length) + From f2acd9b03469a017352987e2b1bb98a506e4f0e8 Mon Sep 17 00:00:00 2001 From: El1seius Date: Tue, 30 May 2023 16:39:06 +0300 Subject: [PATCH 06/14] Correction --- for_dict_challenges.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 36d67692..526c2b69 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -74,30 +74,33 @@ school_students = [ [ # это – первый класс {'first_name': 'Вася'}, - {'first_name': 'Вася'}, + {'first_name': 'Вася'} ],[ # это – второй класс {'first_name': 'Маша'}, {'first_name': 'Маша'}, - {'first_name': 'Оля'}, + {'first_name': 'Оля'} ],[ # это – третий класс {'first_name': 'Женя'}, {'first_name': 'Петя'}, {'first_name': 'Женя'}, - {'first_name': 'Саша'}, + {'first_name': 'Саша'} ], ] +count_name = 0 + + for class_num, school_students in enumerate(school_students, start =1): - class_students = {} + class_students = {} for every_class in school_students: - name_class = every_class['first_name'] - if name_class in class_students: - class_students[name_class] = class_students.get(name_class) + 1 + if every_class['first_name'] in class_students: + count_name += 1 + class_students[every_class['first_name']] = count_name else: - class_students[name_class] = 1 - print(class_students) + count_name = 1 + class_students[every_class['first_name']] = count_name max_repeat = max(class_students, key=class_students.get) print(f'Самое частое имя в классе {class_num}: {max_repeat}') From 83ec9355bf48071a16c05cef342e23e9a0d5b61c Mon Sep 17 00:00:00 2001 From: El1seius Date: Wed, 31 May 2023 21:34:57 +0300 Subject: [PATCH 07/14] Correction --- for_dict_challenges.py | 65 ++++++++++++++++++++++++++++-------------- string_challenges.py | 6 ++-- 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 526c2b69..6394d85e 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -19,22 +19,23 @@ for inform_student in students: - stud_name = inform_student['first_name'] - print(repeat_students) - if stud_name in repeat_students: - repeat_students[stud_name] = repeat_students.get(stud_name) + 1 + student_name = inform_student['first_name'] + if student_name in repeat_students: + repeat_students[student_name] = repeat_students.get(student_name) + 1 else: - repeat_students[stud_name] = 1 + repeat_students[student_name] = 1 -for name, recur in repeat_students.items(): - print(name, recur) +for name, count_name in repeat_students.items(): + print(name, count_name) # Задание 2 # Дан список учеников, нужно вывести самое часто повторящееся имя # Пример вывода: # Самое частое имя среди учеников: Маша + + students = [ {'first_name': 'Вася'}, {'first_name': 'Петя'}, @@ -47,20 +48,18 @@ ] -repeat_students_2 = {} +number_repetitions_names = {} for inf_student in students: - stud_name = inf_student['first_name'] - if stud_name in repeat_students_2: - repeat_students_2[stud_name] = repeat_students_2.get(stud_name) + 1 + student_name = inf_student['first_name'] + if student_name in number_repetitions_names: + number_repetitions_names[student_name] = number_repetitions_names.get(student_name) + 1 else: - repeat_students_2[stud_name] = 1 - - -max_key = max(repeat_students_2, key=repeat_students_2.get) + number_repetitions_names[student_name] = 1 +max_key = max(number_repetitions_names, key=number_repetitions_names.get) print(f'Самое частое имя среди учеников: {max_key}') @@ -91,16 +90,15 @@ count_name = 0 -for class_num, school_students in enumerate(school_students, start =1): +for class_num, every_class in enumerate(school_students, start=1): class_students = {} - - for every_class in school_students: - if every_class['first_name'] in class_students: + for every_schoolkid in every_class: + if every_schoolkid['first_name'] in class_students: count_name += 1 - class_students[every_class['first_name']] = count_name + class_students[every_schoolkid['first_name']] = count_name else: count_name = 1 - class_students[every_class['first_name']] = count_name + class_students[every_schoolkid['first_name']] = count_name max_repeat = max(class_students, key=class_students.get) print(f'Самое частое имя в классе {class_num}: {max_repeat}') @@ -112,11 +110,14 @@ # Класс 2a: девочки 2, мальчики 0 # Класс 2б: девочки 0, мальчики 2 + school = [ {'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]}, {'class': '2б', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]}, {'class': '2б', 'students': [{'first_name': 'Даша'}, {'first_name': 'Олег'}, {'first_name': 'Маша'}]}, ] + + is_male = { 'Олег': True, 'Маша': False, @@ -126,7 +127,27 @@ } - +for inform_class in school: + class_num = inform_class['class'] + if inform_class.get('students'): + students = inform_class['students'] + count_women = 0 + count_man = 0 + + for name_stud in students: + name_gender = name_stud['first_name'] + if name_gender in is_male: + gender = is_male[name_gender] + if gender: + count_women += 1 + else: + count_man += 1 + else: + print(f'У {name_gender} не обозначен пол') + count_man = "Ошибка" + count_women = " Ошибка" + break + print(f'Класс {class_num}: девочки {count_man}, мальчики {count_women}') # Задание 5 diff --git a/string_challenges.py b/string_challenges.py index 15a86740..40f0e8c7 100644 --- a/string_challenges.py +++ b/string_challenges.py @@ -5,7 +5,7 @@ # Вывести количество букв "а" в слове word = 'Архангельск' -print(word.count('а')) +print(word.lower().count('а')) # Вывести количество гласных букв в слове @@ -26,8 +26,8 @@ # Вывести первую букву каждого слова на отдельной строке sentence = 'Мы приехали в гости' sentence_word = sentence.split(" ") -for element in sentence_word: - print(element[0]) +for word in sentence_word: + print(word[0]) # Вывести усреднённую длину слова в предложении From 81966ee5d8186b3319cb3654d4c17bddd71e63e3 Mon Sep 17 00:00:00 2001 From: El1seius Date: Thu, 1 Jun 2023 01:06:08 +0300 Subject: [PATCH 08/14] Done --- for_dict_challenges.py | 73 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 6 deletions(-) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 6394d85e..3640489e 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -6,6 +6,9 @@ # Петя: 2 +print('Ответ на задание 1:') + + students = [ {'first_name': 'Вася'}, {'first_name': 'Петя'}, @@ -36,6 +39,9 @@ # Самое частое имя среди учеников: Маша +print('Ответ на задание 2:') + + students = [ {'first_name': 'Вася'}, {'first_name': 'Петя'}, @@ -70,6 +76,9 @@ # Самое частое имя в классе 2: Маша +print('Ответ на задание 3:') + + school_students = [ [ # это – первый класс {'first_name': 'Вася'}, @@ -111,6 +120,9 @@ # Класс 2б: девочки 0, мальчики 2 +print('Ответ на задание 4:') + + school = [ {'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]}, {'class': '2б', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]}, @@ -131,23 +143,23 @@ class_num = inform_class['class'] if inform_class.get('students'): students = inform_class['students'] - count_women = 0 count_man = 0 + count_women = 0 for name_stud in students: name_gender = name_stud['first_name'] if name_gender in is_male: gender = is_male[name_gender] if gender: - count_women += 1 - else: count_man += 1 + else: + count_women += 1 else: print(f'У {name_gender} не обозначен пол') + count_women = "Ошибка" count_man = "Ошибка" - count_women = " Ошибка" break - print(f'Класс {class_num}: девочки {count_man}, мальчики {count_women}') + print(f'Класс {class_num}: девочки {count_women}, мальчики {count_man}') # Задание 5 @@ -156,6 +168,10 @@ # Больше всего мальчиков в классе 3c # Больше всего девочек в классе 2a + +print('Ответ на задание 5:') + + school = [ {'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]}, {'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]}, @@ -166,5 +182,50 @@ 'Олег': True, 'Миша': True, } -# ??? + +sum_gender_in_scool =[] + + +for inform_class in school: + num_gender_in_class = {} + class_num = inform_class['class'] + num_gender_in_class['class'] = class_num + if inform_class.get('students'): + students = inform_class['students'] + count_women = 0 + count_man = 0 + + for name_students in students: + name_gender = name_students['first_name'] + if name_gender in is_male: + gender = is_male[name_gender] + gender_list = {} + if gender: + count_man += 1 + else: + count_women += 1 + else: + print(f'У {name_gender} не обозначен пол') + count_women = "Ошибка" + count_man = "Ошибка" + break + gender_list['девочки'] = count_women + gender_list['мальчики'] = count_man + num_gender_in_class['gender'] = gender_list + sum_gender_in_scool.append(num_gender_in_class) + + + + +for inform_every_class in sum_gender_in_scool: + num_class = inform_every_class.get('class') + + if inform_every_class.get('gender'): + gender_lists = inform_every_class['gender'] + max_gender = max(gender_lists, key=gender_lists.get) + + if max_gender == 'девочки': + print(f'Больше всего девочек в классе {num_class}') + elif max_gender == 'мальчики': + print(f'Больше всего мальчиков в классе {num_class}') From d6f59038f6258d9c3e74dc8a0410785575ca788b Mon Sep 17 00:00:00 2001 From: El1seius Date: Mon, 5 Jun 2023 00:07:38 +0300 Subject: [PATCH 09/14] Exercise bonus partially done --- for_dict_challenges_bonus.py | 51 +++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index 9f35a0a0..f1e12793 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -66,5 +66,54 @@ def generate_chat_history(): return messages +def user_max_message(messages): + numb_user_message = {} + for one_message in messages: + id_user = one_message['sent_by'] + if id_user in numb_user_message: + numb_user_message[id_user] +=1 + else: + numb_user_message[id_user] =1 + + id_user_max_message = max(numb_user_message, key=numb_user_message.get) + return id_user_max_message + + +def message_with_max_answer(messages): + numb_id_message = {} + for one_message in messages: + id_message = one_message['reply_for'] + if id_message != None: + if id_message in numb_id_message: + numb_id_message[id_message] += 1 + else: + numb_id_message[id_message] = 1 + + id_message_max = max(numb_id_message, key=numb_id_message.get) + + for one_message in messages: + if id_message_max == one_message['id']: + return one_message['sent_by'] + + +def message_with_max_viewing(messages): + numb_viewing = {} + for one_message in messages: + id_user = one_message['sent_by'] + numb_viewing[id_user] = len(one_message['seen_by']) + max_viewing = max(numb_viewing, key=numb_viewing.get) + + id_users =[] + for every_user in numb_viewing: + if numb_viewing[max_viewing] == numb_viewing[every_user]: + id_users.append(every_user) + print(numb_viewing) + return id_users + + if __name__ == "__main__": - print(generate_chat_history()) + messages = generate_chat_history() + + print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') + print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') + print(f'Cообщения, которые видело больше всего уникальных пользователей, принадлежит пользователям: {message_with_max_viewing(messages)}') \ No newline at end of file From 69c603c707ab8181e66841e30bac2e688e657b8d Mon Sep 17 00:00:00 2001 From: El1seius Date: Thu, 8 Jun 2023 02:28:40 +0300 Subject: [PATCH 10/14] Done paragraph 3 --- for_dict_challenges_bonus.py | 50 +++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index f1e12793..0ffc4675 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -36,6 +36,7 @@ import lorem +from collections import Counter def generate_chat_history(): messages_amount = random.randint(200, 1000) @@ -67,28 +68,24 @@ def generate_chat_history(): def user_max_message(messages): - numb_user_message = {} + id_user_message = [] for one_message in messages: id_user = one_message['sent_by'] - if id_user in numb_user_message: - numb_user_message[id_user] +=1 - else: - numb_user_message[id_user] =1 + id_user_message.append(id_user) + numb_user_message = Counter(id_user_message) id_user_max_message = max(numb_user_message, key=numb_user_message.get) return id_user_max_message def message_with_max_answer(messages): - numb_id_message = {} + list_with_id_message = [] for one_message in messages: id_message = one_message['reply_for'] - if id_message != None: - if id_message in numb_id_message: - numb_id_message[id_message] += 1 - else: - numb_id_message[id_message] = 1 + if id_message is not None: + list_with_id_message.append(id_message) + numb_id_message = Counter(list_with_id_message) id_message_max = max(numb_id_message, key=numb_id_message.get) for one_message in messages: @@ -97,18 +94,29 @@ def message_with_max_answer(messages): def message_with_max_viewing(messages): - numb_viewing = {} + users_with_unique_users = {} for one_message in messages: id_user = one_message['sent_by'] - numb_viewing[id_user] = len(one_message['seen_by']) - max_viewing = max(numb_viewing, key=numb_viewing.get) + id_seen_by = one_message['seen_by'] + if id_user in users_with_unique_users: + for user_seen_by in id_seen_by: + if user_seen_by not in users_with_unique_users[id_user]: + users_with_unique_users[id_user].append(user_seen_by) + else: + users_with_unique_users[id_user] = id_seen_by + + if id_user in users_with_unique_users[id_user]: + users_with_unique_users[id_user].remove(id_user) + + id_with_max_nubm_unique_users = max(users_with_unique_users, key=users_with_unique_users.get) + max_nubm_unique_users = len(users_with_unique_users[id_with_max_nubm_unique_users]) + users_with_max_unique_users = [] + for every_user in users_with_unique_users: + nubm_unique_user = len(users_with_unique_users[every_user]) + if nubm_unique_user >=max_nubm_unique_users: + users_with_max_unique_users.append(every_user) - id_users =[] - for every_user in numb_viewing: - if numb_viewing[max_viewing] == numb_viewing[every_user]: - id_users.append(every_user) - print(numb_viewing) - return id_users + return users_with_max_unique_users if __name__ == "__main__": @@ -116,4 +124,4 @@ def message_with_max_viewing(messages): print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') - print(f'Cообщения, которые видело больше всего уникальных пользователей, принадлежит пользователям: {message_with_max_viewing(messages)}') \ No newline at end of file + print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') \ No newline at end of file From b55efe6fc4268470f25ba4ea40bd06a35952e7af Mon Sep 17 00:00:00 2001 From: El1seius Date: Sun, 18 Jun 2023 23:04:14 +0300 Subject: [PATCH 11/14] =?UTF-8?q?Done=20the=20task=20=E2=84=965=20fron=20f?= =?UTF-8?q?or...bonus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- for_dict_challenges_bonus.py | 78 ++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index 0ffc4675..1969eef4 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -32,7 +32,7 @@ """ import random import uuid -import datetime +import datetime import lorem @@ -113,15 +113,87 @@ def message_with_max_viewing(messages): users_with_max_unique_users = [] for every_user in users_with_unique_users: nubm_unique_user = len(users_with_unique_users[every_user]) - if nubm_unique_user >=max_nubm_unique_users: + if nubm_unique_user == max_nubm_unique_users: users_with_max_unique_users.append(every_user) return users_with_max_unique_users +def what_time_with_max_message(messages): + time_create_message = [] + for one_message in messages: + hour_create_message = one_message['sent_at'].hour + if hour_create_message < 12: + time_create_message.append('утром') + elif 12 <= hour_create_message >= 18: + time_create_message.append('днём') + else: + time_create_message.append('вечером') + + numb_message_in_period_of_time = Counter(time_create_message) + max_numb_message_in_period_of_time = max(numb_message_in_period_of_time, key=numb_message_in_period_of_time.get) + return max_numb_message_in_period_of_time + + +# Задание №5 + +def complite_id_messages_with_reply_None (messages): + id_message_with_reply_None = [] + for one_message in messages: + if one_message['reply_for'] is None: + id_message_with_reply_None.append(one_message['id']) + + return id_message_with_reply_None + + +def get_id_last_messages_in_thread(id_message_for_reply): + while True: + temp_list_id_message_for_reply = [] + for one_message in messages: + if one_message['reply_for'] in id_message_for_reply: + temp_list_id_message_for_reply.append(one_message['id']) + + if len(temp_list_id_message_for_reply) == 0: + break + + id_message_for_reply = temp_list_id_message_for_reply[:] + + return id_message_for_reply + + +def get_id_message_before_last_reply(id_message_with_last_reply): + id_message_before_last_reply = [] + for one_id in id_message_with_last_reply: + for one_message in messages: + if str(one_id) in str(one_message['id']): + id_message_before_last_reply.append(one_message['reply_for']) + + return id_message_before_last_reply + +def id_messages_with_most_long_replies(messages): + id_message_for_reply = complite_id_messages_with_reply_None (messages) + id_message_with_last_reply = get_id_last_messages_in_thread(id_message_for_reply) + id_message_before_last_reply = get_id_message_before_last_reply(id_message_with_last_reply) + + finish_id_messages = [] + for one_id in id_message_before_last_reply: + while one_id is not None: + for one_message in messages: + if str(one_id) in str(one_message['id']): + if one_message['reply_for'] is not None: + one_id = one_message['reply_for'] + else: + finish_id_messages.append(str(one_message['id'])) + one_id = None + + return finish_id_messages + + if __name__ == "__main__": messages = generate_chat_history() print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') - print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') \ No newline at end of file + print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') + print(f'Больше всего сообщений в чате: {what_time_with_max_message(messages)}') + print(f'Идентификаторы сообщений, который стали началом для самых длинных тредов (цепочек ответов) {id_messages_with_most_long_replies(messages)}') \ No newline at end of file From cc333c9501bcf91759afea24819d086a35c92fc4 Mon Sep 17 00:00:00 2001 From: El1seius Date: Tue, 20 Jun 2023 22:55:33 +0300 Subject: [PATCH 12/14] Remade and schortened --- for_dict_challenges_bonus.py | 110 ++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index 1969eef4..bb1cd403 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -67,6 +67,9 @@ def generate_chat_history(): return messages +# Решение задания № 1 + + def user_max_message(messages): id_user_message = [] for one_message in messages: @@ -78,6 +81,9 @@ def user_max_message(messages): return id_user_max_message +# Решение задания № 2 + + def message_with_max_answer(messages): list_with_id_message = [] for one_message in messages: @@ -93,30 +99,32 @@ def message_with_max_answer(messages): return one_message['sent_by'] +# Решение задания № 3 + + def message_with_max_viewing(messages): + users_with_users = create_users_with_unique_users(messages) + id_with_max_nubm_unique_users = max(users_with_users, key=users_with_users.get) + max_nubm_unique_users = len(users_with_users[id_with_max_nubm_unique_users]) + + return [user for user in users_with_users + if len(users_with_users[user]) == max_nubm_unique_users] + + +def create_users_with_unique_users(messages): users_with_unique_users = {} for one_message in messages: id_user = one_message['sent_by'] id_seen_by = one_message['seen_by'] if id_user in users_with_unique_users: - for user_seen_by in id_seen_by: - if user_seen_by not in users_with_unique_users[id_user]: - users_with_unique_users[id_user].append(user_seen_by) + users_with_unique_users[id_user].update(id_seen_by) else: - users_with_unique_users[id_user] = id_seen_by - - if id_user in users_with_unique_users[id_user]: - users_with_unique_users[id_user].remove(id_user) - - id_with_max_nubm_unique_users = max(users_with_unique_users, key=users_with_unique_users.get) - max_nubm_unique_users = len(users_with_unique_users[id_with_max_nubm_unique_users]) - users_with_max_unique_users = [] - for every_user in users_with_unique_users: - nubm_unique_user = len(users_with_unique_users[every_user]) - if nubm_unique_user == max_nubm_unique_users: - users_with_max_unique_users.append(every_user) - - return users_with_max_unique_users + users_with_unique_users[id_user] = set(id_seen_by) + + return users_with_unique_users + + +# Решение задания № 4 def what_time_with_max_message(messages): @@ -135,24 +143,26 @@ def what_time_with_max_message(messages): return max_numb_message_in_period_of_time -# Задание №5 +# Решение задания № 5 + -def complite_id_messages_with_reply_None (messages): - id_message_with_reply_None = [] +def create_id_with_reply_for(messages): + id_with_reply_for = {} for one_message in messages: - if one_message['reply_for'] is None: - id_message_with_reply_None.append(one_message['id']) + id_with_reply_for[one_message['id']] = one_message['reply_for'] + + return id_with_reply_for - return id_message_with_reply_None +def get_id_last_messages_in_thread(id_with_reply_for): -def get_id_last_messages_in_thread(id_message_for_reply): + id_message_for_reply = [id for id in id_with_reply_for + if id_with_reply_for.get(id) is None] + while True: - temp_list_id_message_for_reply = [] - for one_message in messages: - if one_message['reply_for'] in id_message_for_reply: - temp_list_id_message_for_reply.append(one_message['id']) - + temp_list_id_message_for_reply = [id for id in id_with_reply_for + if id_with_reply_for.get(id) in id_message_for_reply] + if len(temp_list_id_message_for_reply) == 0: break @@ -160,31 +170,23 @@ def get_id_last_messages_in_thread(id_message_for_reply): return id_message_for_reply - -def get_id_message_before_last_reply(id_message_with_last_reply): - id_message_before_last_reply = [] - for one_id in id_message_with_last_reply: - for one_message in messages: - if str(one_id) in str(one_message['id']): - id_message_before_last_reply.append(one_message['reply_for']) - - return id_message_before_last_reply def id_messages_with_most_long_replies(messages): - id_message_for_reply = complite_id_messages_with_reply_None (messages) - id_message_with_last_reply = get_id_last_messages_in_thread(id_message_for_reply) - id_message_before_last_reply = get_id_message_before_last_reply(id_message_with_last_reply) + id_with_reply_for = create_id_with_reply_for(messages) + id_message_with_last_reply = get_id_last_messages_in_thread(id_with_reply_for) + + id_message_before_last_reply = [id_with_reply_for[id] for id in id_message_with_last_reply + if id in id_with_reply_for] finish_id_messages = [] - for one_id in id_message_before_last_reply: - while one_id is not None: - for one_message in messages: - if str(one_id) in str(one_message['id']): - if one_message['reply_for'] is not None: - one_id = one_message['reply_for'] - else: - finish_id_messages.append(str(one_message['id'])) - one_id = None + + for id in id_message_before_last_reply: + while True: + if id_with_reply_for[id] is not None: + id = id_with_reply_for[id] + else: + finish_id_messages.append(id) + break return finish_id_messages @@ -192,8 +194,8 @@ def id_messages_with_most_long_replies(messages): if __name__ == "__main__": messages = generate_chat_history() - print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') - print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') - print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') - print(f'Больше всего сообщений в чате: {what_time_with_max_message(messages)}') + #print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') + # print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') + # print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') + # print(f'Больше всего сообщений в чате: {what_time_with_max_message(messages)}') print(f'Идентификаторы сообщений, который стали началом для самых длинных тредов (цепочек ответов) {id_messages_with_most_long_replies(messages)}') \ No newline at end of file From 802da7cd3657dd867f0f29a75ce380e014a93d54 Mon Sep 17 00:00:00 2001 From: El1seius Date: Tue, 20 Jun 2023 23:40:17 +0300 Subject: [PATCH 13/14] Remade and schortened --- for_dict_challenges_bonus.py | 39 ++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index bb1cd403..93f2dd5a 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -67,7 +67,7 @@ def generate_chat_history(): return messages -# Решение задания № 1 +# Решение задания №1 def user_max_message(messages): @@ -79,9 +79,9 @@ def user_max_message(messages): numb_user_message = Counter(id_user_message) id_user_max_message = max(numb_user_message, key=numb_user_message.get) return id_user_max_message - -# Решение задания № 2 + +# Решение задания №2 def message_with_max_answer(messages): @@ -99,6 +99,8 @@ def message_with_max_answer(messages): return one_message['sent_by'] +# Решение задания №3 + # Решение задания № 3 @@ -106,7 +108,7 @@ def message_with_max_viewing(messages): users_with_users = create_users_with_unique_users(messages) id_with_max_nubm_unique_users = max(users_with_users, key=users_with_users.get) max_nubm_unique_users = len(users_with_users[id_with_max_nubm_unique_users]) - + return [user for user in users_with_users if len(users_with_users[user]) == max_nubm_unique_users] @@ -124,7 +126,7 @@ def create_users_with_unique_users(messages): return users_with_unique_users -# Решение задания № 4 +# Решение задания №4 def what_time_with_max_message(messages): @@ -143,26 +145,23 @@ def what_time_with_max_message(messages): return max_numb_message_in_period_of_time -# Решение задания № 5 - +# Задание №5 def create_id_with_reply_for(messages): id_with_reply_for = {} for one_message in messages: id_with_reply_for[one_message['id']] = one_message['reply_for'] - - return id_with_reply_for + return id_with_reply_for def get_id_last_messages_in_thread(id_with_reply_for): - id_message_for_reply = [id for id in id_with_reply_for if id_with_reply_for.get(id) is None] - + while True: temp_list_id_message_for_reply = [id for id in id_with_reply_for if id_with_reply_for.get(id) in id_message_for_reply] - + if len(temp_list_id_message_for_reply) == 0: break @@ -170,16 +169,12 @@ def get_id_last_messages_in_thread(id_with_reply_for): return id_message_for_reply - def id_messages_with_most_long_replies(messages): id_with_reply_for = create_id_with_reply_for(messages) id_message_with_last_reply = get_id_last_messages_in_thread(id_with_reply_for) - id_message_before_last_reply = [id_with_reply_for[id] for id in id_message_with_last_reply - if id in id_with_reply_for] - + id_message_before_last_reply = [id_with_reply_for[id] for id in id_message_with_last_reply] finish_id_messages = [] - for id in id_message_before_last_reply: while True: if id_with_reply_for[id] is not None: @@ -187,15 +182,15 @@ def id_messages_with_most_long_replies(messages): else: finish_id_messages.append(id) break - + return finish_id_messages if __name__ == "__main__": messages = generate_chat_history() - #print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') - # print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') - # print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') - # print(f'Больше всего сообщений в чате: {what_time_with_max_message(messages)}') + print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') + print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') + print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') + print(f'Больше всего сообщений в чате: {what_time_with_max_message(messages)}') print(f'Идентификаторы сообщений, который стали началом для самых длинных тредов (цепочек ответов) {id_messages_with_most_long_replies(messages)}') \ No newline at end of file From fdc14f11ae682eec4f6bf29816b7333b8117995a Mon Sep 17 00:00:00 2001 From: El1seius Date: Fri, 23 Jun 2023 00:20:27 +0300 Subject: [PATCH 14/14] Correction --- for_dict_challenges.py | 12 ++++-------- for_dict_challenges_bonus.py | 29 +++++++++++++++-------------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 3640489e..54172fb9 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -60,7 +60,7 @@ for inf_student in students: student_name = inf_student['first_name'] if student_name in number_repetitions_names: - number_repetitions_names[student_name] = number_repetitions_names.get(student_name) + 1 + number_repetitions_names[student_name] += 1 else: number_repetitions_names[student_name] = 1 @@ -96,18 +96,14 @@ ] -count_name = 0 - - for class_num, every_class in enumerate(school_students, start=1): class_students = {} for every_schoolkid in every_class: if every_schoolkid['first_name'] in class_students: - count_name += 1 - class_students[every_schoolkid['first_name']] = count_name + + class_students[every_schoolkid['first_name']] += 1 else: - count_name = 1 - class_students[every_schoolkid['first_name']] = count_name + class_students[every_schoolkid['first_name']] = 1 max_repeat = max(class_students, key=class_students.get) print(f'Самое частое имя в классе {class_num}: {max_repeat}') diff --git a/for_dict_challenges_bonus.py b/for_dict_challenges_bonus.py index 93f2dd5a..05167810 100644 --- a/for_dict_challenges_bonus.py +++ b/for_dict_challenges_bonus.py @@ -99,18 +99,16 @@ def message_with_max_answer(messages): return one_message['sent_by'] -# Решение задания №3 - # Решение задания № 3 -def message_with_max_viewing(messages): - users_with_users = create_users_with_unique_users(messages) - id_with_max_nubm_unique_users = max(users_with_users, key=users_with_users.get) - max_nubm_unique_users = len(users_with_users[id_with_max_nubm_unique_users]) +def get_id_with_max_unique_users(messages): + id_users_with_unique_users = create_users_with_unique_users(messages) + id_with_max_nubm_unique_users = max(id_users_with_unique_users, key=id_users_with_unique_users.get) + max_nubm_unique_users = len(id_users_with_unique_users[id_with_max_nubm_unique_users]) - return [user for user in users_with_users - if len(users_with_users[user]) == max_nubm_unique_users] + return [user for user in id_users_with_unique_users + if len(id_users_with_unique_users[user]) == max_nubm_unique_users] def create_users_with_unique_users(messages): @@ -145,7 +143,8 @@ def what_time_with_max_message(messages): return max_numb_message_in_period_of_time -# Задание №5 +# Решение задания №5 + def create_id_with_reply_for(messages): id_with_reply_for = {} @@ -155,12 +154,14 @@ def create_id_with_reply_for(messages): return id_with_reply_for def get_id_last_messages_in_thread(id_with_reply_for): - id_message_for_reply = [id for id in id_with_reply_for - if id_with_reply_for.get(id) is None] + id_message_for_reply = [ + one_id for one_id in id_with_reply_for + if one_id in id_with_reply_for] while True: - temp_list_id_message_for_reply = [id for id in id_with_reply_for - if id_with_reply_for.get(id) in id_message_for_reply] + temp_list_id_message_for_reply = [ + one_id for one_id in id_with_reply_for + if id_with_reply_for.get(one_id) in id_message_for_reply] if len(temp_list_id_message_for_reply) == 0: break @@ -191,6 +192,6 @@ def id_messages_with_most_long_replies(messages): print(f'Больше всех сообщений написал пользователь с ID: {user_max_message(messages)}') print(f'Сообщение, на которое больше всего отвечали, принадлежит пользователю: {message_with_max_answer(messages)}') - print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {message_with_max_viewing(messages)}') + print(f'ID пользователей, сообщения, которых видело больше всего уникальных пользователей: {get_id_with_max_unique_users(messages)}') print(f'Больше всего сообщений в чате: {what_time_with_max_message(messages)}') print(f'Идентификаторы сообщений, который стали началом для самых длинных тредов (цепочек ответов) {id_messages_with_most_long_replies(messages)}') \ No newline at end of file