Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 18 additions & 5 deletions for_challenges.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# Необходимо вывести имена всех учеников из списка с новой строки

names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???
for name in names:
print(name)


# Задание 2
Expand All @@ -12,7 +13,8 @@
# Петя: 4

names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???
for name in names:
print(f'{name}: {len(name)}')


# Задание 3
Expand All @@ -25,7 +27,12 @@
'Маша': False,
}
names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???
for name in names:
if is_male.get(name) == True:
print(f'{name} пол мужской')
else:
print(f'{name} пол женский')



# Задание 4
Expand All @@ -40,7 +47,11 @@
['Вася', 'Маша', 'Саша', 'Женя'],
['Оля', 'Петя', 'Гриша'],
]
# ???

for group_number, group in enumerate(groups, start=1):
print(f'Группа {group_number}: {len(group)} ученика')




# Задание 5
Expand All @@ -54,4 +65,6 @@
['Оля', 'Петя', 'Гриша'],
['Вася', 'Маша', 'Саша', 'Женя'],
]
# ???

for group_number, group in enumerate(groups, start=1):
print(f'Группа {group_number}: {", ".join(group)}')
43 changes: 35 additions & 8 deletions for_dict_challenges.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
# Дан список учеников, нужно вывести самое часто повторящееся имя
Expand All @@ -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
# Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе.
Expand All @@ -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
Expand All @@ -72,17 +84,29 @@
'Миша': 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
# По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков
# Пример вывода:
# Больше всего мальчиков в классе 3c
# Больше всего девочек в классе 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 = {
Expand All @@ -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']}")
25 changes: 25 additions & 0 deletions for_dict_challenges_bonus.py
Original file line number Diff line number Diff line change
Expand Up @@ -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())
23 changes: 17 additions & 6 deletions string_challenges.py
Original file line number Diff line number Diff line change
@@ -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 = 'Мы приехали в гости'
# ???
words = []
for letter in sentence.split():
words.append(len(letter))
print(int(sum(words)/len(sentence.split())))