Реализация reversed на Python

Рейтинг: 1Ответов: 4Опубликовано: 22.03.2023

Мне нужно реализовать функцию, которая переворачивает строку, reversed использовать нельзя. Я написал такой код по заданной блок-схеме(код ниже) и столкнулся с проблемой, что в Python нельзя так работать со строкой(по индексу). Я получаю ошибку TypeError: 'str' object does not support item assignment

Как можно доработать код?(Нельзя использовать сторонние библиотеки). Я могу создать новую строку и пройтись циклом с конца, но можно ли как-то перевернуть эту без создания новой? Код:

line = input('Введите строку, которую нужно перевернуть: ')
l = len(line)-1
for i in range(l, l // 2, 1):
    temp = line[i]
    line[i] = line[l-i]
    line[l-i] = temp
print(f'Перевернутая строка: {line}')

Ответы

▲ 2Принят

Строка это неизменяемый тип данных в питоне. При любых операциях будет создаваться новая.

Можно написать что то вроде

s=s[-1] +s[1:-1] + s[0]

Но это будет новая строка в новом куске памяти.

Медода манипулировать строкой inplace нет

Разворот строки срезом делается так

print(line[::-1]) 
▲ 1

Можно использовать тот же цикл, только в обратном порядке и с отрицательным шагом.

line = input('Введите строку, которую нужно перевернуть: ')
reversed_line = ""
for i in range(len(line) - 1, -1, -1):
    reversed_line += line[i]
print(f'Перевернутая строка: {reversed_line}')
▲ 1

А что насчет срезов?

line = input('Введите строку, которую нужно перевернуть: ')
print(f'Перевернутая строка: {line[::-1]}')
▲ 0

Оптимальный вариант:

line = input('')
print(line[::-1])