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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
env
.env
.vscode
.DS_Store
15 changes: 10 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,8 @@
'Маша': False,
}
names = ['Оля', 'Петя', 'Вася', 'Маша']
# ???
for name in names:
print(f"{name}: {'мужской' if is_male[name] else 'женский'}")


# Задание 4
Expand All @@ -40,7 +43,8 @@
['Вася', 'Маша', 'Саша', 'Женя'],
['Оля', 'Петя', 'Гриша'],
]
# ???
for index, group in enumerate(groups):
print(f'Группа {index + 1}: {len(group)} ученика')


# Задание 5
Expand All @@ -54,4 +58,5 @@
['Оля', 'Петя', 'Гриша'],
['Вася', 'Маша', 'Саша', 'Женя'],
]
# ???
for index, group in enumerate(groups):
print(f'Группа {index + 1}: ' + ', '.join(group))
112 changes: 71 additions & 41 deletions for_dict_challenges.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,66 @@
from collections import Counter


IS_MALE = {
'Олег': True,
'Маша': False,
'Оля': False,
'Миша': True,
'Даша': False,
}


def get_max_count_name(input_lst: list) -> str:
names = Counter([student['first_name'] for student in input_lst])
return max(names, key=names.get)


def get_gender_counter(input_lst: list) -> Counter:
lst_genders = ['male' if IS_MALE[elem['first_name']] else 'female' for elem in input_lst]
return Counter(lst_genders)


# Задание 1
# Дан список учеников, нужно посчитать количество повторений каждого имени ученика
# Пример вывода:
# Вася: 1
# Маша: 2
# Петя: 2


students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Петя'},
]
# ???

names = Counter([student['first_name'] for student in students])
for name, counter in names.items():
print(f'{name}: {counter}')

# Задание 2
# Дан список учеников, нужно вывести самое часто повторящееся имя
# Пример вывода:
# Самое частое имя среди учеников: Маша

# # Задание 2
# # Дан список учеников, нужно вывести самое часто повторяющееся имя
# # Пример вывода:
# # Самое частое имя среди учеников: Маша
students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
]
# ???
max_count_name = get_max_count_name(students)
print(f'Самое частое имя среди учеников: {max_count_name}')


# Задание 3
# Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе.
# Пример вывода:
# Самое частое имя в классе 1: Вася
# Самое частое имя в классе 2: Маша
# # Задание 3
# # Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе.
# # Пример вывода:
# # Самое частое имя в классе 1: Вася
# # Самое частое имя в классе 2: Маша

school_students = [
[ # это – первый класс
Expand All @@ -44,52 +71,55 @@
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
],[ # это – третий класс
],
[ # это – третий класс
{'first_name': 'Женя'},
{'first_name': 'Петя'},
{'first_name': 'Женя'},
{'first_name': 'Саша'},
],
]
# ???

for index, students in enumerate(school_students):
max_count_name = get_max_count_name(students)
print(f'Самое частое имя в классе {index + 1}: {max_count_name}')

# Задание 4
# Для каждого класса нужно вывести количество девочек и мальчиков в нём.
# Пример вывода:
# Класс 2a: девочки 2, мальчики 0
# Класс 2б: девочки 0, мальчики 2

# # # Задание 4
# # # Для каждого класса нужно вывести количество девочек и мальчиков в нём.
# # # Пример вывода:
# # # Класс 2a: девочки 2, мальчики 0
# # # Класс 2б: девочки 0, мальчики 2

school = [
{'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
{'class': '2б', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
{'class': '', 'students': [{'first_name': 'Даша'}, {'first_name': 'Олег'}, {'first_name': 'Маша'}]},
{'class': '', 'students': [{'first_name': 'Даша'}, {'first_name': 'Олег'}, {'first_name': 'Маша'}]},
]
is_male = {
'Олег': True,
'Маша': False,
'Оля': False,
'Миша': True,
'Даша': False,
}
# ???

for cls in school:
counter_genders = get_gender_counter(cls['students'])
print(f"Класс {cls['class']}: девочки {counter_genders.get('female', 0)}, " +
f"мальчики {counter_genders.get('male', 0)}")

# Задание 5
# По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков
# Пример вывода:
# Больше всего мальчиков в классе 3c
# Больше всего девочек в классе 2a
# # # Задание 5
# # # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков
# # # Пример вывода:
# # # Больше всего мальчиков в классе 3c
# # # Больше всего девочек в классе 2a

school = [
{'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
{'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
{'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
{'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
]
is_male = {
'Маша': False,
'Оля': False,
'Олег': True,
'Миша': True,
}
# ???

count_lst = []
for cls in school:
counter_genders = get_gender_counter(cls['students'])
count_lst.append({'class': cls['class'], 'genders': counter_genders})

max_male_elem = max(count_lst, key=lambda x: x['genders']['male'])
max_female_elem = max(count_lst, key=lambda x: x['genders']['female'])

print(f"Больше всего мальчиков в классе {max_male_elem['class']}")
print(f"Больше всего девочек в классе {max_female_elem['class']}")
34 changes: 34 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[flake8]
exclude = .git, __pychache__,env,vevn
max_line_length = 120
max-complexity = 8

[mypy]
python_version = 3.9
disallow_untyped_defs = True
ignore_missing_imports = True
exclude = env.*|venv.*|.venv.*

#ignore = E722 | игнорирова правила

#установка доп библиотек
#pip install flake8-bugbear | доп к линтеру
#pip install flake8-builtins | подсвечивает системные переменные
#pip install pep8-naming | проверка по названию и по типу имен
#pip install flake8-commas | проверка на запятые
#pip install flake8-variables-names | проверяет имена переменных
#pip install flake8-import-order | не корректное расставление импортов


# в папке .vscose создаем settings.json
# {
# "python.linting.pylintEnabled": false,
# "python.linting.mypyEnabled": false,
# "python.linting.flake8Enabled": true,
# "python.linting.enabled": true
# }


#для аннотации типов
#https://www.youtube.com/watch?v=8MGoop99np8
#pip install mypy
27 changes: 18 additions & 9 deletions string_challenges.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,37 @@
# Вывести последнюю букву в слове
word = 'Архангельск'
# ???
print(word[-1])


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


# Вывести количество гласных букв в слове
vowels = 'ауоыиэяюёе'
counter = 0
word = 'Архангельск'
# ???

for elem in word.lower():
if elem in vowels:
counter += 1
print(counter)

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

print(len(sentence.split()))

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

for elem in sentence.split():
if not elem:
continue
print(elem[0])

# Вывести усреднённую длину слова в предложении
sentence = 'Мы приехали в гости'
# ???
counter = 0
lst_words = sentence.split()
for word in lst_words:
counter += len(word)
print(counter // len(lst_words))