Как перевернуть строку в Python
s = "Привет"
print(s[::-1])тевирП[::-1] — срез всей строки с шагом −1, то есть с конца к началу. Это самый короткий и быстрый способ. Исходная строка не меняется: строки в Python неизменяемы, срез создаёт новую.
Другие способы
reversed выдаёт буквы в обратном порядке, а join собирает их обратно в строку:
s = "Python"
print("".join(reversed(s)))nohtyPВ учебных задачах иногда просят обойтись без срезов — тогда строку собирают в цикле, ставя каждую букву в начало:
s = "Python"
result = ""
for ch in s:
result = ch + result
print(result)nohtyPПроверка на палиндром
Палиндром читается одинаково в обе стороны. Чтобы не мешали большие буквы и пробелы, строку сначала приводят к нижнему регистру и убирают пробелы:
phrase = input()
clean = phrase.lower().replace(" ", "")
if clean == clean[::-1]:
print("палиндром")
else:
print("не палиндром")А роза упала на лапу АзорапалиндромЕсли во фразе есть знаки препинания, их тоже нужно убрать — например, оставить только буквы: "".join(ch for ch in phrase.lower() if ch.isalpha()).
Слова в обратном порядке
Чтобы переставить не буквы, а слова, строку режут на слова, переворачивают список и склеивают:
s = "Минск Брест Гродно"
print(" ".join(s.split()[::-1]))Гродно Брест МинскПеревернуть число
Проще всего — через строку. Нули в начале при обратном переводе в число пропадают:
n = 1200
print(int(str(n)[::-1]))21В задачах на цифры числа часто требуют решение без строк — через остаток от деления. n % 10 даёт последнюю цифру, n // 10 отбрасывает её:
n = 12345
result = 0
while n > 0:
result = result * 10 + n % 10
n //= 10
print(result)54321Список
Для списков те же приёмы: a[::-1] возвращает перевёрнутую копию, а метод a.reverse() переворачивает сам список и возвращает None.
a = [1, 2, 3]
print(a[::-1])
a.reverse()
print(a)[3, 2, 1]
[3, 2, 1]У строк метода reverse нет: s.reverse() даёт ошибку AttributeError.