Как проверить палиндром с помощью цикла while python

Я пытаюсь проверить палиндром с помощью цикла while и индексации, вернуть True или False. Я знаю, что это можно сделать намного проще, используя цикл for или даже одну строку: return num [:: - 1] == num
(num - параметр внутри функции) щелкните здесь, чтобы увидеть изображение кода

Я хотел бы завершить это с помощью цикла while, если бы кто-нибудь мог пролить свет на то, что я делаю здесь не так, было бы здорово :)

Между прочим, палиндром - это слово или фраза, которые можно читать одинаково в обратном порядке, например: уровень, гоночная машина, ротаватор и т. Д.


person DecafOyster208    schedule 11.11.2015    source источник
comment
вам нужен оператор if в вашем цикле while, чтобы завершить цикл, иначе вы будете зацикливаться, пока не получите ошибку   -  person NendoTaka    schedule 11.11.2015


Ответы (2)


def palindrome(s):
    i = 0
    while i <= len(s) / 2:
        if s[i] != s[-i - 1]:
            return False
        i += 1
    return True

это должно сработать.

person Daniel    schedule 11.11.2015
comment
У меня проблема, хотя при вводе s как пустой строки он говорит, что индекс строки выходит за пределы допустимого диапазона - person DecafOyster208; 11.11.2015
comment
Вы можете добавить строку в начале следующим образом: если len (s) == 0 вернет False / True, в зависимости от того, что вы хотите вернуть - person Daniel; 11.11.2015

person    schedule
comment
Хороший, полный код! Но было бы идеально, если бы вы могли добавить некоторое объяснение того, что помогло. - person vahdet; 19.02.2019
comment
Хм, хорошо, я даю объяснение. Подождите несколько минут. Я вернусь к вам. - person Rashed Rahat; 19.02.2019