класс палиндрома - NameError: имя 'is_palindrome' не определено - PullRequest
0 голосов
/ 26 марта 2019

я получаю ошибку

"NameError: имя 'is_palindrome' не определено"

Я нашел эту простую проблему на веб-сайте, который просит создать класс с именем Palindrome и внутри него функцией с именем is_palindrome, которая проверяет данное слово и возвращает True, если это палиндром, и False в противном случае это должно быть сделано с использованием класса и статического метода (поэтому я не могу их удалить) код ниже.

class Palindrome:
    @staticmethod
    def is_palindrome(s):
        return len(s) < 2 or s[0] == s[-1] and is_palindrome(s[1:-1])

word = input()
print(Palindrome.is_palindrome(word))

Я решил вопрос, удалив объявление класса другие методы, такие как

return word==word[::-1]

но я пытаюсь понять проблему с приведенным выше кодом, почему, когда я включаю его в класс, я получаю эту ошибку

«NameError: имя 'is_palindrome' не определено»

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Хотя я не вижу, как метод в классе или статичность помогает, но вот исправление:

class Palindrome:
    @staticmethod
    def is_palindrome(s):
        return len(s) < 2 or s[0] == s[-1] and Palindrome.is_palindrome(s[1:-1])

word = input("Enter your word: ")
print(Palindrome.is_palindrome(word))

OUTPUT :

Enter your word: ROTAVATOR
True

РЕДАКТИРОВАТЬ :

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

def is_palindrome(s):
    return len(s) < 2 or s[0] == s[-1] and is_palindrome(s[1:-1])

word = input("Enter your word: ")
print(is_palindrome(word))

РЕДАКТИРОВАТЬ 3 :

Другой способ:

class Palindrome:
    def is_palindrome(self, s):
        return len(s) < 2 or s[0] == s[-1] and self.is_palindrome(s[1:-1])

word = input("Enter your word: ")
p_Obj = Palindrome()
print(p_Obj.is_palindrome(word))
0 голосов
/ 26 марта 2019

Нет необходимости в классе Палиндром.Просто есть

def is_palindrome(s):
    return len(s) < 2 or s[0] == s[-1] and is_palindrome(s[1:-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...