因此,我正在使用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/

10-12 22:50