From 7c97f56a28cfb582809d3f7d40090f91d80d1ed5 Mon Sep 17 00:00:00 2001 From: Alexandr Beloded <105494913+Beloded1@users.noreply.github.com> Date: Thu, 15 Sep 2022 20:16:11 +0400 Subject: [PATCH 1/2] made the adjustments --- for_challenges.py | 27 ++++++++++++--- for_dict_challenges.py | 79 ++++++++++++++++++++++++++++++++++++++---- string_challenges.py | 37 ++++++++++++++++---- 3 files changed, 126 insertions(+), 17 deletions(-) diff --git a/for_challenges.py b/for_challenges.py index 997754da..8534bc7c 100644 --- a/for_challenges.py +++ b/for_challenges.py @@ -2,7 +2,8 @@ # Необходимо вывести имена всех учеников из списка с новой строки names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +for i in range(len(names)): + print(names[i]) # Задание 2 @@ -12,7 +13,8 @@ # Петя: 4 names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +for i in range(len(names)): + print(f"{names[i]}: {len(names[i])}") # Задание 3 @@ -25,7 +27,11 @@ 'Маша': False, } names = ['Оля', 'Петя', 'Вася', 'Маша'] -# ??? +for items in is_male: + if is_male.get(items) == True: + print(f"{items} пол мужской") + else: + print(f"{items} пол женский") # Задание 4 @@ -40,7 +46,16 @@ ['Вася', 'Маша', 'Саша', 'Женя'], ['Оля', 'Петя', 'Гриша'], ] -# ??? +print(f"Всего {len(groups)} группы.") + +for group in groups: + print(f"Группа {len(groups)}: {len(group)} ученика.") # Вариант когда неправильно считает номер группы. +for i in range(len(groups)): + print(f"Гпуппа {i+1}: {len(groups)} ученика.") # Вариант когда неправильно считает количество человек в группе. + # Как объединить чтобы все заработало? + + + # Задание 5 @@ -54,4 +69,6 @@ ['Оля', 'Петя', 'Гриша'], ['Вася', 'Маша', 'Саша', 'Женя'], ] -# ??? \ No newline at end of file +for i in range(len(groups)): + print(f"Группа {i+1}: {groups[i]}") # Работает, но как при выводе убрать знаки "[" и "]" ? + \ No newline at end of file diff --git a/for_dict_challenges.py b/for_dict_challenges.py index 96062ebc..ef6cc867 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -12,8 +12,21 @@ {'first_name': 'Маша'}, {'first_name': 'Петя'}, ] -# ??? +names = dict() +for student in students: + if student['first_name'] not in names.keys(): + names[student['first_name']] = 1 + else: + names[student['first_name']] += 1 +for name, count in names.items(): # Первый вариант. + print(f'{name}: {count}') + + +names = [s['first_name'] for s in students] + +for name in set(names): # Второй вариант. + print(f'{name}: {names.count(name)}') # Задание 2 # Дан список учеников, нужно вывести самое часто повторящееся имя @@ -26,7 +39,15 @@ {'first_name': 'Маша'}, {'first_name': 'Оля'}, ] -# ??? + +names = [s["first_name"] for s in students] +names_and_count = {name: names.count(name) for name in names} +max_count = max(names_and_count.values()) + +for name, count in names_and_count.items(): + if count == max_count: + print(name) + # Задание 3 @@ -51,7 +72,15 @@ {'first_name': 'Саша'}, ], ] -# ??? + +from collections import Counter + +cl = 1 +for item in school_students: + temp = [i['first_name'] for i in item] + c = Counter(temp) + print(f'Самое частое имя в классе {cl}: {c.most_common()[0][0]}') + cl += 1 # Задание 4 @@ -66,14 +95,26 @@ {'class': '2б', 'students': [{'first_name': 'Даша'}, {'first_name': 'Олег'}, {'first_name': 'Маша'}]}, ] is_male = { - 'Олег': True, 'Маша': False, 'Оля': False, + 'Олег': True, 'Миша': True, 'Даша': False, } -# ??? +for clas in school: + boys_count = 0 + girl_count = 0 + for student in clas['students']: + for name in student.values(): + if is_male[name]: + boys_count += 1 + else: + girl_count += 1 + + print("Класс {}: девочки {}, мальчики {} ".format(clas["class"], + girl_count, + boys_count)) #Как записать print в формате f-строк??? # Задание 5 # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков @@ -91,5 +132,31 @@ 'Олег': True, 'Миша': True, } -# ??? + +clases = {} +for clas in school: + clases[clas["class"]] = {"boys_count": 0, "girls_count": 0} + boys_count = 0 + girl_count = 0 + for student in clas['students']: + for name in student.values(): + if is_male[name]: + clases[clas["class"]]["boys_count"] += 1 + else: + clases[clas["class"]]["girls_count"] += 1 +clas_with_max_girl = '' +max_boys = 0 +max_girls = 0 +clas_with_max_boy = '' +for clas in clases.keys(): + if max_boys < clases[clas]['boys_count']: + max_boys = clases[clas]['boys_count'] + clas_with_max_boy = clas + if max_girls < clases[clas]['girls_count']: + max_girls = clases[clas]['girls_count'] + clas_with_max_girl = clas +print(f"Больше всего мальчиков в классе {clas_with_max_boy}") +print(f"Больше всего девочек в классе {clas_with_max_girl}") + + diff --git a/string_challenges.py b/string_challenges.py index 856add2d..5c895a90 100644 --- a/string_challenges.py +++ b/string_challenges.py @@ -1,28 +1,53 @@ # Вывести последнюю букву в слове word = 'Архангельск' -# ??? +print(word[-1]) # Вывести количество букв "а" в слове word = 'Архангельск' -# ??? +word = word.lower() +print(word.count('а')) # Вывести количество гласных букв в слове word = 'Архангельск' -# ??? +word = word.lower() +def countVowels(word): + vowels = ['а','е', 'о', 'и', 'ы', 'у', 'э'] + total = 0 + for s in word: + if s in vowels: + total += 1 + return total + +print(countVowels(word)) # Первый способ. + + +def count_vowels_var2(word): + return sum([1 for x in word.lower() if x in 'аеоиыуэ']) + +print(count_vowels_var2(word)) # Второй способ. + + # Вывести количество слов в предложении sentence = 'Мы приехали в гости' -# ??? +print(len(sentence.split())) # Вывести первую букву каждого слова на отдельной строке sentence = 'Мы приехали в гости' -# ??? +letter = sentence.split() + +print(letter[0][0]) +print(letter[1][0]) +print(letter[2]) +print(letter[3][0]) # Должен быть более рациональный метод вывода через функцию. Пока не сообразил как. + + # Вывести усреднённую длину слова в предложении sentence = 'Мы приехали в гости' -# ??? \ No newline at end of file +print(len(letter[0]+letter[1]+letter[2]+letter[3])//len(letter)) \ No newline at end of file From 327c2a1590afbccebf3ad005333dc7df2ed42719 Mon Sep 17 00:00:00 2001 From: Alexandr Beloded <105494913+Beloded1@users.noreply.github.com> Date: Thu, 15 Sep 2022 20:45:40 +0400 Subject: [PATCH 2/2] Done --- for_dict_challenges.py | 9 ++------- string_challenges.py | 12 ++---------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/for_dict_challenges.py b/for_dict_challenges.py index ef6cc867..52466961 100644 --- a/for_dict_challenges.py +++ b/for_dict_challenges.py @@ -19,15 +19,10 @@ names[student['first_name']] = 1 else: names[student['first_name']] += 1 -for name, count in names.items(): # Первый вариант. +for name, count in names.items(): print(f'{name}: {count}') -names = [s['first_name'] for s in students] - -for name in set(names): # Второй вариант. - print(f'{name}: {names.count(name)}') - # Задание 2 # Дан список учеников, нужно вывести самое часто повторящееся имя # Пример вывода: @@ -114,7 +109,7 @@ print("Класс {}: девочки {}, мальчики {} ".format(clas["class"], girl_count, - boys_count)) #Как записать print в формате f-строк??? + boys_count)) # Задание 5 # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков diff --git a/string_challenges.py b/string_challenges.py index 5c895a90..107aa20c 100644 --- a/string_challenges.py +++ b/string_challenges.py @@ -20,15 +20,7 @@ def countVowels(word): total += 1 return total -print(countVowels(word)) # Первый способ. - - -def count_vowels_var2(word): - return sum([1 for x in word.lower() if x in 'аеоиыуэ']) - -print(count_vowels_var2(word)) # Второй способ. - - +print(countVowels(word)) # Вывести количество слов в предложении @@ -43,7 +35,7 @@ def count_vowels_var2(word): print(letter[0][0]) print(letter[1][0]) print(letter[2]) -print(letter[3][0]) # Должен быть более рациональный метод вывода через функцию. Пока не сообразил как. +print(letter[3][0])