因此,我正在使用testdome
的公共questions练习python,其中之一就是此路径问题。我只能得到50%的解决方案,我不知道为什么。我什至无法创建自己的失败测试。
class Path:
def __init__(self, path):
self.current_path = path
def cd(self, new_path):
new_path_list = new_path.split('/')
for item in new_path_list:
if item == '':
self.current_path = '/'
elif item == '..':
self.current_path = self.current_path[:-2]
else:
self.current_path = self.current_path + '/' + item
if '//' in self.current_path:
self.current_path = self.current_path.replace('//','/')
编辑:根据第一个响应更新了代码。仍然是50%。
谢谢大家的帮助。
最佳答案
猜猜你在哪里
for item in new_path_list:
if new_path_list[0] == '':
你的意思是
for item in new_path_list:
if item == '':
编辑:我以为我会自己尝试;这是我的操作方式(得分100%):
# https://www.testdome.com/questions/python/path/8735
ROOT = "/"
DIV = "/"
PREV = ".."
class Path:
def __init__(self, path):
self.dirs = []
self.cd(path)
@property
def current_path(self):
return str(self)
def cd(self, path):
if path.startswith(ROOT):
# absolute path - start from the beginning
self.dirs = []
path = path[len(ROOT):]
# follow relative path
for dir in path.split(DIV):
if dir == PREV:
self.dirs.pop()
else:
self.dirs.append(dir)
def __str__(self):
return ROOT + DIV.join(self.dirs)
path = Path('/a/b/c/d')
path.cd('../x')
print(path.current_path)
关于python - Testdome“Path” Python-无法确定为什么我的解决方案不是100%正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44036874/