Skip to content

Commit 85ef5fb

Browse files
author
Alexey Chernykh
committed
add for_dict_challenges.py
1 parent 190192d commit 85ef5fb

File tree

4 files changed

+182
-16
lines changed

4 files changed

+182
-16
lines changed

.idea/basic_exercises.iml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

Lines changed: 132 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

for_dict_challenges.py

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@
1313
{'first_name': 'Петя'},
1414
]
1515
name_of_students = [students[name]['first_name'] for name in range(len(students))]
16+
uniq_name = []
1617

17-
for name in range(len(students)):
18-
print(f'{students[name]["first_name"]}: {name_of_students.count(students[name]["first_name"])}')
18+
for name in name_of_students:
19+
if name not in uniq_name:
20+
uniq_name.append(name)
1921

22+
for name in range(len(uniq_name)):
23+
print(f'{uniq_name[name]}: {name_of_students.count(students[name]["first_name"])}')
2024

2125
# Задание 2
2226
# Дан список учеников, нужно вывести самое часто повторящееся имя
@@ -29,10 +33,30 @@
2933
{'first_name': 'Маша'},
3034
{'first_name': 'Оля'},
3135
]
32-
name_of_students = [students[name]['first_name'] for name in range(len(students))]
33-
print(name_of_students)
36+
37+
def max_name(students):
38+
name_of_students = [students[name]['first_name'] for name in range(len(students))]
39+
40+
names_counter = dict()
41+
for name in name_of_students:
42+
if name in names_counter:
43+
names_counter[name] += 1
44+
else:
45+
names_counter[name] = 1
46+
47+
max_names = []
48+
max_count = 0
49+
50+
for name, count_of_name in names_counter.items():
51+
if count_of_name > max_count:
52+
max_count = count_of_name
53+
max_names = [name]
54+
elif count_of_name == max_count:
55+
max_names.append(name)
56+
return f'Самое частое имя среди учеников: {"".join(max_names)}'
3457

3558

59+
print(max_name(students))
3660
# Задание 3
3761
# Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе.
3862
# Пример вывода:
@@ -55,8 +79,9 @@
5579
{'first_name': 'Саша'},
5680
],
5781
]
58-
# ???
59-
82+
print(max_name(school_students[0]))
83+
print(max_name(school_students[1]))
84+
print(max_name(school_students[2]))
6085

6186
# Задание 4
6287
# Для каждого класса нужно вывести количество девочек и мальчиков в нём.
@@ -76,7 +101,20 @@
76101
'Миша': True,
77102
'Даша': False,
78103
}
79-
# ???
104+
105+
male_gender = 0
106+
female_gender = 0
107+
108+
for class_i in range(len(school)):
109+
lst_of_class = [class_x for class_x in school[class_i]['students']]
110+
for i in range(len(lst_of_class)):
111+
if is_male.get(lst_of_class[i]['first_name']) == 1:
112+
male_gender += 1
113+
else:
114+
female_gender += 1
115+
print(f'Класс {school[class_i]["class"]}: девочки {female_gender}, мальчики {male_gender}')
116+
male_gender = 0
117+
female_gender = 0
80118

81119

82120
# Задание 5

0 commit comments

Comments
 (0)