Цели практической работы
- Закрепить понятия «пространство имён» и «область видимости» и работу с ними, использование global и nonlocal.
- Отработать создание и использование лямбда-функций, в том числе встроенных в Python.
- Отработать использование блока if __name__ == "__main__" для чистоты кода.
Что входит в работу
- Задача 1. Новые списки.
- Задача 2. И снова zip.
- Задача 3. Палиндром: возвращение.
- Задача 4. Уникальный шифр.
Задача 1. Новые списки
Что нужно сделать
Даны три списка:
floats: List[float] = [12.3554, 4.02, 5.777, 2.12, 3.13, 4.44, 11.0001]
names: List[str] = ["Vanes", "Alen", "Jana", "William", "Richards", "Joy"]
numbers: List[int] = [22, 33, 10, 6894, 11, 2, 1]
Напишите код, который создаёт три новых списка. Вот их содержимое:
- Каждое число из списка floats возводится в третью степень и округляется до трёх знаков после запятой.
- Из списка names берутся только те имена, в которых есть минимум пять букв.
- Из списка numbers берётся произведение всех чисел.
Задача 2. И снова zip
Помните, как нам приходилось что-то выдумывать, чтобы создать аналог функции zip? Так вот, теперь вы знаете, как это сделать буквально в одну строку.
Даны список букв (letters) и список цифр (numbers). Каждый список состоит из N элементов. Создайте кортежи из пар элементов списков и запишите их в список results. Не используйте функцию zip. Решите задачу «в одну строку» (не считая print(results)).
Задача 3. Палиндром: возвращение
Для Python существует множество различных библиотек для работы с данными, причём как встроенных, так и внешних. С некоторыми из них мы уже работали, например с модулем collections, когда использовали специальный класс OrderedDict, с помощью которого делали упорядоченный словарь. Конечно же, в этой библиотеке есть и другие возможности (на самом деле их совсем немного).
Используя модуль collections и новые знания о функциях, реализуйте функцию can_be_poly, которая принимает на вход строку и проверяет, можно ли получить из неё палиндром.
Задача 4. Уникальный шифр
Представьте, что вы — детектив, который получил загадочное письмо с шифровкой. Нужно найти количество уникальных символов в письме, чтобы разгадать его и раскрыть тайну.
Задача
Напишите функцию, которая принимает строку и возвращает количество уникальных символов в строке. Используйте для выполнения задачи lambda-функции и map и/или filter.
Сделайте так, чтобы алгоритм НЕ был регистрозависим: буквы разного регистра должны считаться одинаковыми.