Операции со строками и другими последовательностями

При решении следующих задач не используйте циклы без необходимости, многие задачи можно решить без них.

Функции на проверку условий должны возвращать логическое значение True или False.

  1. Дана строка, проверьте, является ли она палиндромом. Т.е. верно ли, что если ее прочитать с конца в начало, то получится та же строка. тесты
    • Добавьте в функцию второй логический параметр strict, если он False, то при проверке нужно игнорировать регистр букв и пробелы. тесты
  2. Дана строка, проверьте, верно ли, что в ней все символы идут парами одинаковых. Например, для строки aaBBccDD55** нужно вернуть True, а для строки aaBBcC**hF нужно вернуть False. тесты
  3. Дана строка, состоящая из букв (это можно не проверять в функции, вам это гарантируется). Проверьте, что регистр букв чередуется. Например, подходит строка aBsTjU и aBa, но не подходят aBBa и FFFFa. тесты
  4. Напишите функцию, которой дается строка. Она должна поменять местами все использования 0 на 1, а все использования 1 на 0. Например, abc01xyz000111 должно превратиться в abc10xyz111000. тесты
    • Чтобы решить задачу, воспользуйтесь методом translate. Он заменяет в строке символы по указанному правилу. Например, мы хотим символ 'a' заменить на '1', символ b на '2', а символ 'c' на '3'.

      Давайте на секунду предположим, что эти правила вместе хранятся в одной переменной rules, чуть позже мы узнаем, как сделать такую переменную с правилами. Тогда можно будет написать "aabbcc".translate(rules), и получится результат "112233".

      Как же записать правила в переменную? Это делается с помощью вспомогательного метода str.maketrans, ему надо передать строку из символов для замены и строку символов, которыми надо заменить: rules = str.maketrans("abc", "123"). Строки внутри str.maketrans должны быть одинаковой длины. Первый символ первой строки заменяется на первый символ второй и т.д.

      После этого переменной rules можно пользоваться для разных строк, например, "abcabc".translate(rules) превратится в "123123", а "abcdefaa".tranlate(rules) превратится в "123def11".

    • Добавьте в функцию два параметра: символы для замены. Т.е. заменять можно не только 0 на 1 и наоборот, а любой символ на любой. На самом деле, решить нужно эту задачу. А вариант с 0 и 1 нужен только для тренировки. тесты

  5. Кривая дракона. В функцию передается один аргумент, целое число \(n\ge0\). Если передан 0, нужно вернуть строку R. Иначе нужно повторить \(n\) раз следующую операцию: допустим, на предыдущем шаге мы получили строку \(S\). Нужно к ней приписать букву R, а потом приписать снова \(S\), но, во-первых, прочитанную с конца, а, во-вторых, в которой буквы R заменены на буквы L и наоборот. Например, при \(n=1\) получается RRL как R + R + L, при \(n=2\) получается RRLRRLL = RRL + R + RLL и т.д. тесты
    • В качесте необязательного дополнения: подключите библиотеку turtle, разберитесь в ней и заставьте черепаху двигаться по полученным в этой задаче правилам. Она идет на фиксированное расстояние, потом поворачивается направо или налево в зависимости от очередной буквы в строке, потом снова идет на такое же расстояние, и процесс продолжается.