Операции со строками и другими последовательностями
При решении следующих задач не используйте циклы без необходимости, многие задачи можно решить без них.
Функции на проверку условий должны возвращать логическое значение True
или False
.
- Дана строка, проверьте, является ли она палиндромом. Т.е. верно ли, что если ее прочитать с конца в начало, то получится та же строка. тесты
- Добавьте в функцию второй логический параметр strict, если он False, то при проверке нужно игнорировать регистр букв и пробелы. тесты
- Дана строка, проверьте, верно ли, что в ней все символы идут парами одинаковых. Например, для строки
aaBBccDD55**
нужно вернутьTrue
, а для строкиaaBBcC**hF
нужно вернутьFalse
. тесты - Дана строка, состоящая из букв (это можно не проверять в функции, вам это гарантируется). Проверьте, что регистр букв чередуется.
Например, подходит строка
aBsTjU
иaBa
, но не подходятaBBa
иFFFFa
. тесты - Напишите функцию, которой дается строка. Она должна поменять местами все использования 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 нужен только для тренировки. тесты
-
- Кривая дракона. В функцию передается один аргумент, целое число \(n\ge0\). Если передан 0, нужно вернуть строку
R
. Иначе нужно повторить \(n\) раз следующую операцию: допустим, на предыдущем шаге мы получили строку \(S\). Нужно к ней приписать буквуR
, а потом приписать снова \(S\), но, во-первых, прочитанную с конца, а, во-вторых, в которой буквыR
заменены на буквыL
и наоборот. Например, при \(n=1\) получаетсяRRL
какR
+R
+L
, при \(n=2\) получаетсяRRLRRLL
=RRL
+R
+RLL
и т.д. тесты- В качесте необязательного дополнения: подключите библиотеку
turtle
, разберитесь в ней и заставьте черепаху двигаться по полученным в этой задаче правилам. Она идет на фиксированное расстояние, потом поворачивается направо или налево в зависимости от очередной буквы в строке, потом снова идет на такое же расстояние, и процесс продолжается.
- В качесте необязательного дополнения: подключите библиотеку