Python проблема вывода на печать для перестановки палиндромов - PullRequest
0 голосов
/ 30 мая 2020

Я хочу увидеть, является ли данная строка перестановкой палиндрома или нет. Вот решение python. Я пытаюсь протестировать его для следующего примера ввода, но получаю сообщение об ошибке.

import re
class Solution(object):
    def isPalindrome(self, s):

        regex = re.compile('[^a-zA-Z0-9]')
        s=regex.sub('', lower(s))
        print(s)
        j=len(s)-1
        for i in range(0,len(s)/2):
            if s[i]==s[j]:
                j-=1
            else:
                return False

        return True

    # The word is civic , which is a palindrome. So it should return true.    
    s = "vicic"

print(isPalindrome(s))

Я получаю эту ошибку: «NameError: имя 'self' не определено». Как это исправить и распечатать результат?

1 Ответ

0 голосов
/ 30 мая 2020

isPalindrome(), как вы определили здесь, связано с объектом / классом Solution.

В отличие от обычной функции Python ваш метод вызывается для вашего объекта решения.

Если вы хотите вызвать его с учетом вашей текущей структуры, вы должны сначала создать экземпляр решения, создать строку, которую хотите протестировать, а затем вызвать метод объекта:

sol = Solution() # instance of Solution
s = "vicic"
sol.isPalindrome(s) # False

Также обратите внимание, что I взял вашу строку s из того места, где вы ее ранее объявили, поскольку она находилась в неправильной области.

В целом кажется, что ваш класс решения может быть немного избыточным, часть красоты Python заключается в его способности писать простые скрипты, поэтому вы можете переписать isPalindrome() как простую функцию, а не метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...