Ваш for
проверяет цикл все пары символов, независимо от того, если он нашел несоответствие или нет. Таким образом, в случае строки «38113» она вернет True
, так как переменная flag
будет установлена на True
после проверки на равенство последней цифры в «38113» и ее обратной версии «31183» (оба равны 3, тогда как строка не является палиндром).
Итак, вам нужно вернуть False
сразу после того, как вы обнаружили несоответствие; если вы проверили все символы и не нашел - то вернуть True
, например, так:
def palindrome(num):
r = num[::-1]
for i in range (0, len(num)-1):
if(r[i] != num[i]):
return False
return True
Кроме того, как кто-то отметил, что это будет лучше использовать ломтики питона - проверить documentation.
Что происходит, когда вы запускаете программу? Вы получили сообщение об ошибке? Если да, то какая ошибка? Если нет, то как результат отличается от ожидаемого? –