Я пытаюсь удалить пробелы рекурсивно в python. Я начал с базового случая пустой строки, чтобы вернуть self.phrase, предполагая, что он вернет None. Я в этом не прав? Вот код:Рекурсивно удалять пробелы в Python
class palindrome:
phrase = ""
def remove_spaces (self, phrase):
if self.phrase == "":
return self.phrase
if self.phrase[0] != " ":
return self.phrase[0] + remove_spaces (self.phrase[1:])
Однако UnitTest не удается:
class test_remove_spaces(unittest.TestCase):
def test_remove_spaces_none(self):
self.assertEquals (remove_spaces (None), None)
Проблема из теста сбой происходит из-за ошибки. Не совсем понятно, почему remove_spaces недоступен. Является ли это вложенность проблемы, так как я пытался сохранить данные скрыты ?:
Error
Traceback (most recent call last):
File "C:\Users\******\Dropbox\CS2\CS2_Assignment2\Assignment2.py", line 24, in test_remove_spaces_none
self.assertEquals(remove_spaces(None), None)
NameError: global name 'remove_spaces' is not defined
Ненавижу быть этим человеком, но почему вы делаете это рекурсивно? Итерация через символы не является особенно питонической. Если вы не настроитесь на это рекурсивно, я бы предложил просто использовать phrase.replace ("", "") – DaveBensonPhillips
@ user3697163 Я вкладываю деньги на выполнение домашних заданий. Это нормально. Но это, наверное, почему. – idjaw