我试图在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
答案 0 :(得分:1)
remove_spaces
是palindrome
课程中的一种方法。在调用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)