我正在尝试进行递归练习而且我遇到了问题。我需要拆分一个 将文件地址转换为元组,最终在元组中得到一个元组。 以下是我的想法,当我测试它时,它会返回:
输入路径:C:/ Users:/ Games
('C:',('用户:','游戏'))
我想要:('C:','用户:','游戏')
def split_path(s):
path = ()
if s.find("/") == -1:
path= (s)
else:
location = s.find("/")
path += (s[:location],)
path += (split_path(s[location+1:]),)
return path
答案 0 :(得分:2)
您可能希望将靠近函数最后一行的行更改为:
path.extend(split_path(s[location+1:]))
顺便问一下,你为什么不使用类似的东西:
path = s.split('/')
答案 1 :(得分:1)
你真的很亲密。仔细看看你的最后一行:
path += (split_path(s[location+1:]),)
你将函数的返回值(一个元组)放在另一个元组中。
编辑添加:我刚注意到一个非常微妙的错误,可能会导致您将返回值放在元组中:
path = (s)
应该是
path = (s,)
这就是我写它的方式:
def split_path(s):
index = s.find('/')
if index == -1:
return (s,)
else:
return (s[:index],) + split_path(s[index+1:])