我的计算机科学作业要求我使用来重制Python中的split()
字符串方法,其中y
是分隔符,x
是用户输入的字符串。
到目前为止,我所做的代码如下所示:
def split(x, y = " "):
list_one = []
list_two = []
for char in x:
if char not in y:
list_two.append(char)
else:
list_one.append(''.join(list_two))
list_two = []
return list_one
不过,在这个函数给出的输出中,我遇到了一些问题。以下是两个示例输出:
>>> split("babab", "a")
['b', 'b']
>>> split("9*r10*r11", "*r")
['9', '', '10', '']
问题是什么?
在
split("babab", "a")
中,返回的list_one
中完全没有最后一个'b'
,我不知道为什么会这样在
split(9*r10*r11", "*r")
中,返回的list_one
中有空的单引号;再说一遍,我不知道他们为什么会在那里。此外,1中出现的问题。这里也发生了,列表中总共缺少编号11
。
有人能向我解释为什么会发生这种情况,以及我如何着手解决这个问题吗?
您的两个错误是:
- 循环后不处理
list_two
;以及 - 您正在检查单个字符,这在
len(y) > 1
时无法正常工作-您应该检查字符串的开头直到y
的长度
既然这是你的家庭作业,我想你应该把它拿走。