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
49 changes: 44 additions & 5 deletions for_challenges.py

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Всё хорошо.
Можно ещё так
for name in names:
print(f"{name}: {['женский', 'мужской'][is_male[name]]}")

Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,31 @@
# Необходимо вывести имена всех учеников из списка с новой строки

names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???


def print_names(names):
for name in names:
print(name)


print_names(names)

# Задание 2
# Необходимо вывести имена всех учеников из списка, рядом с именем показать количество букв в нём
# Пример вывода:
# Оля: 3
# Петя: 4

names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???


def print_names_with_len(names):
for name in names:
print(f"{name}: {len(name)}")


print_names_with_len(names)

# Задание 3
# Необходимо вывести имена всех учеников из списка, рядом с именем вывести пол ученика

Expand All @@ -25,9 +37,19 @@
'Маша': False,
}
names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???


def print_name_with_gender(names):
for name in names:
if is_male.get(name):
gender = "мужской"
else:
gender = "женский"
print(f"{name}: {gender}")


print_name_with_gender(names)

# Задание 4
# Даны группу учеников. Нужно вывести количество групп и для каждой группы – количество учеников в ней
# Пример вывода:
Expand All @@ -40,9 +62,15 @@
['Вася', 'Маша', 'Саша', 'Женя'],
['Оля', 'Петя', 'Гриша'],
]
# ???


def print_groups_with_student(groups):
for group in groups:
print(f"Группа {groups.index(group) + 1}: {len(group)} ученика")


print_groups_with_student(groups)

# Задание 5
# Для каждой пары учеников нужно с новой строки перечислить учеников, которые в неё входят
# Пример вывода:
Expand All @@ -54,4 +82,15 @@
['Оля', 'Петя', 'Гриша'],
['Вася', 'Маша', 'Саша', 'Женя'],
]
# ???


def print_groups_with_names(groups):
for group in groups:
print(f"Группа {groups.index(group) + 1}: {get_names_from_group(group)}")


def get_names_from_group(group):
return ", ".join(str(name) for name in group)


print_groups_with_names(groups)
66 changes: 61 additions & 5 deletions for_dict_challenges.py

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Всё отлично!

Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,14 @@
{'first_name': 'Маша'},
{'first_name': 'Петя'},
]
# ???

names = [name["first_name"] for name in students]
# first variant
for name in set(names):
print(f'{name}: {names.count(name)}')
# second variant
for name in list(dict.fromkeys(names)):
print(f"{name}: {names.count(name)}")

# Задание 2
# Дан список учеников, нужно вывести самое часто повторящееся имя
Expand All @@ -26,8 +32,16 @@
{'first_name': 'Маша'},
{'first_name': 'Оля'},
]
# ???

names = [name["first_name"] for name in students]
famous_count_name = 0
famous_name = ""
for name in names:
if names.count(name) > famous_count_name:
famous_count_name = names.count(name)
famous_name = name

print(f"Самое частое имя среди учеников: {famous_name}")

# Задание 3
# Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе.
Expand All @@ -44,15 +58,30 @@
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
],[ # это – третий класс
], [ # это – третий класс
{'first_name': 'Женя'},
{'first_name': 'Петя'},
{'first_name': 'Женя'},
{'first_name': 'Саша'},
],
]
# ???
class_count = len(school_students)


def get_famous_name(names):
famous_count_name = 0
famous_name = ""
for name in names:
if names.count(name) > famous_count_name:
famous_count_name = names.count(name)
famous_name = name
return famous_name


for class_room in range(class_count):
names = [name["first_name"] for name in school_students[class_room]]
print(f"Самое частое имя в классе {class_room + 1}: {get_famous_name(names)}")

# Задание 4
# Для каждого класса нужно вывести количество девочек и мальчиков в нём.
Expand All @@ -72,8 +101,16 @@
'Миша': True,
'Даша': False,
}
# ???

for class_room in school:
male = 0
female = 0
for student in class_room['students']:
if is_male.get(student['first_name']):
male += 1
else:
female += 1
print(f"Класс {class_room['class']}: девочки {female}, мальчики {male}")

# Задание 5
# По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков
Expand All @@ -91,5 +128,24 @@
'Олег': True,
'Миша': True,
}
# ???

max_male_count = 0
max_male_class_room = ""
max_female_count = 0
max_female_class_room = ""
for class_room in school:
male = 0
female = 0
for student in class_room['students']:
if is_male.get(student['first_name']):
male += 1
else:
female += 1
if male > max_male_count:
max_male_count = male
max_male_class_room = class_room['class']
if female > max_female_count:
max_female_count = female
max_female_class_room = class_room['class']
print(f"Больше всего мальчиков в классе {max_male_class_room}")
print(f"Больше всего девочек в классе {max_female_class_room}")
57 changes: 56 additions & 1 deletion for_dict_challenges_bonus.py

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Возможно самое лучшее решение которое я видел, есть более лаконичные, но гораздо медленнее

Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,60 @@ def generate_chat_history():
return messages


def collect_tasks():
find_user_id_with_max_messages()
find_user_id_with_max_replies()
most_watched_ids()


def find_user_id_with_max_messages():
max_count_messages = 0
user_id_with_max_messages = ""
user_id_list = []
for message in generate_chat_history():
user_id_list.append(message.get("sent_by"))
for user in user_id_list:
if user_id_list.count(user) > max_count_messages:
max_count_messages = user_id_list.count(user)
user_id_with_max_messages = user
print(
f"айди пользователя, который написал больше всех сообщений: {user_id_with_max_messages}, количество сообщений: {max_count_messages}")


def find_user_id_with_max_replies():
max_count_id = 0
replies_id = ""
replies_id_list = []
messages = generate_chat_history()
user_id_with_max_replies = ""

for message in messages:
if message.get("reply_for") is not None:
replies_id_list.append(str(message.get("reply_for")))
# print(replies_id_list)
for message_id in replies_id_list:
if replies_id_list.count(message_id) > max_count_id:
max_count_id = replies_id_list.count(message_id)
replies_id = message_id
for m in messages:
if str(m.get("id")) == replies_id:
user_id_with_max_replies = m.get("sent_by")
print(f"айди пользователя, на сообщения которого больше всего отвечали: {user_id_with_max_replies}")


def most_watched_ids():
max_id_size = 0
max_id_list = []
user_id_list = []
messages = generate_chat_history()
for message in messages:
if len(message.get("seen_by")) > max_id_size:
max_id_size = len(message.get("seen_by"))
max_id_list.clear()
max_id_list = message.get("seen_by")
print(
f"айди пользователей, сообщения которых видело больше всего уникальных пользователей: {', '.join(str(uid) for uid in max_id_list)}")


if __name__ == "__main__":
print(generate_chat_history())
collect_tasks()
24 changes: 13 additions & 11 deletions string_challenges.py

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Всё хорошо.

Original file line number Diff line number Diff line change
@@ -1,28 +1,30 @@
# Вывести последнюю букву в слове
word = 'Архангельск'
# ???

print(word[-1])

# Вывести количество букв "а" в слове
word = 'Архангельск'
# ???

print(word.lower().count("а"))

# Вывести количество гласных букв в слове
word = 'Архангельск'
# ???

vowels = ["а", "у", "о", "ы", "и", "э", "я", "ю", "ё", "е"]
vowels_count = 0
for ch in word.lower():
if ch in vowels:
vowels_count += 1
print(f"количество гласных букв в слове {word} - {vowels_count}")

# Вывести количество слов в предложении
sentence = 'Мы приехали в гости'
# ???

print(len(sentence.split(" ")))

# Вывести первую букву каждого слова на отдельной строке
sentence = 'Мы приехали в гости'
# ???

for w in sentence.split(" "):
print(w.capitalize())

# Вывести усреднённую длину слова в предложении
sentence = 'Мы приехали в гости'
# ???
words = sentence.split()
print(int(sum(len(i) for i in words) / len(words)))