Предмет: Информатика, автор: netynek

Задача: Реверсія рядка

Напишіть функцію на Python, яка приймає рядок і повертає його реверсовану версію. Ви не можете використовувати вбудовану функцію reverse() або схожі засоби. Спробуйте вирішити задачу без створення додаткового рядка.
Приклад виклику функції:print(reverse_string("Hello, World!"))
Очікуваний вивід:!dlroW ,olleH
Нехай код буде коротеньким та ефективним! Удачі!


netynek: если не сможете решить за 2 часа я отправлю решение для етой задачи
netynek: вообще я придумал ету задачу и хотел чтобы ви решили её
netynek: молодцы
netynek: если что могу ответить на вопросы
p15: Но будет интересно увидеть другой код тоже
p15: Ну кроме [::-1] - это понятно
p15: Теперь бы еще оценить краткость и эффективность кода лучшим ответом, но учитывая оценку, которую поставили моему ответу...
Сегодня не все могут понять рекурсию,
Вернее понять могут-то все, а понимают не все.
Сегодня не все могут понимать,
Мало, кто может так делать.

Ответы

Автор ответа: dimonchop
1

Код:

def reverse_string(s):

   s = list(s)

   i, j = 0, len(s) - 1

   while i < j:

       s[i], s[j] = s[j], s[i]

       i += 1

       j -= 1

   return ''.join(s)

print(reverse_string("Hello, World!")

Пояснення:

1. Спочатку функція отримує рядок `s` як вхідний аргумент.

2. `s = list(s)` - Ми перетворюємо рядок `s` в список символів, це допоможе нам зручно маніпулювати символами рядка, оскільки списки можуть бути змінювані (mutable).

3. `i, j = 0, len(s) - 1` - Ми ініціалізуємо два покажчики `i` та `j`. `i` вказує на початок рядка, а `j` на його кінець.

4. Далі, у нас є цикл `while`, який працює доти, доки `i` менше `j`. Це гарантує, що ми будемо обмінювати символи, поки не дійдемо до середини рядка.

5. У циклі ми використовуємо операцію обміну значень між `s[i]` та `s[j]`, яка здійснює обернення символів на відповідних позиціях. Це допомагає обернути рядок шляхом обміну символів від початку до кінця.

6. `i` збільшується на 1, і `j` зменшується на 1, таким чином, обмінюючи символи та зближуючи покажчики.

7. Нарешті, ми повертаємо реверсований рядок, об'єднуючи символи списку знову в рядок за допомогою `''.join(s)`.


netynek: Відмінна робота!
netynek: Тільки немае пояснення.
netynek: але це не так важливо
dimonchop: UPD: добавив пояснення
netynek: дякую
netynek: Це як тест це не контрольна робота не домашня моя це просто тест.
netynek: Я дуже люблю задавати такі завдання.
nazat201: Привет, можешь пожалуйста помочь мне с моим последним заданием
Автор ответа: p15
1

Ответ:

def reverse_string(s):

   return s if len(s)==1  else s[-1]+reverse_string(s[:-1])

     

print(reverse_string("Hello, World!"))

Объяснение:

Да прибудет с Вами сила рекурсивного питона :)

В ответе нет ни одного цикла, он занимает 3 строки, из которых 2 обязательных (print и def)


nazat201: прошу помоги
nazat201: Прошу помоги с моим послежним заданием
p15: excel. не интересно. sorry
nazat201: Ну пожалуйста для меня это очень важно, а для тебя я уверен легко прошу помоги
p15: у меня кроме этого есть чем заниматься. потому написал чтобы не было неясностей
netynek: япросто был афк
netynek: и не увидел твой ответ
netynek: ну твой ответ определёно лучше
nazat201: Привет, можешь пожалуйста помочь мне с моим последним заданием
dimonchop: Зачем спамить тебе дали понять что нет
Похожие вопросы
Предмет: Английский язык, автор: ajtzanamir321