在Python中递归删除空格

时间:2016-02-21 22:31:08

标签: python recursion

我试图在python中递归删除空格。我开始使用空字符串的基本情况来返回self.phrase,假设它将返回None。我错了吗?这是代码:

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:])

但是,单位测试失败了:

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

2 个答案:

答案 0 :(得分:1)

remove_spacespalindrome课程中的一种方法。在调用remove_spaces之前,您需要首先实例化您的课程。

class test_remove_spaces(unittest.TestCase):
    def test_remove_spaces_none(self):
        obj = palindrome()
        self.assertEquals (obj.remove_spaces(None), None)

另外,我建议阅读PEP8 style-guide。类通常遵循驼峰大小写,首字母大写,因此您的类可以重命名为:

class Palindrome:

答案 1 :(得分:-1)

为什么不使用正则表达式?

import re
subject = "   test "
no_space = re.sub(r"\s+", "", subject, 0, re.IGNORECASE)