Что нужно сделать
Для Python существует множество различных библиотек для работы с данными, причём как встроенных, так и внешних. С некоторыми из них мы уже работали, например с модулем collections
, когда использовали специальный класс OrderedDict
, с помощью которого делали упорядоченный словарь. Конечно же, в этой библиотеке есть и другие возможности (на самом деле их совсем немного). Вот официальная документация: collections — Container datatypes.
Используя модуль collections
и новые знания о функциях, реализуйте функцию can_be_poly
, которая принимает на вход строку и проверяет, можно ли получить из неё палиндром.
Пример кода:
print(can_be_poly('abcba'))
print(can_be_poly('abbbc'))
Результат:
True
False
Что оценивается
- Результат вычислений корректен.
- Формат вывода соответствует примеру.
- Переменные, функции и собственные методы классов имеют значащие имена, не
a
,b
,c
,d
. - Решение опирается на использование лямбда-функций.
- Классы и методы/функции имеют прописанную документацию (хотя бы минимальную).
- Есть аннотация типов для методов/функций и их аргументов (кроме
args
иkwargs
). Если функция/метод ничего не возвращают, то используетсяNone
.
from collections import Counter
def can_be_poly(word: str) -> bool:
'''Функция сравнивает остаток от деления длины слова
с суммой остатка от деления полученных счетчиков букв'''
return len(word) % 2 == sum(value % 2 for value in Counter(word).values())
if __name__ == '__main__':
print(can_be_poly('abcba'))
print(can_be_poly('abbbc'))