рекурсивные структуры данных

prarabacha

Новичок
Пользователь
Окт 27, 2021
15
1
3
Здравствуйте, не могли бы помочь разобраться почему выдает ошибку.

Python:
dirs = [
    ( 'folder1',
        [
            'file1',
            ( 'folder2',
                [
                    'file2',
                    'file3'
                ]
            ),
            ( 'folder3',
                [
                    'file3',
                    'file4',
                    ('folder4', ['file3'])
                ]
            ),
            'file5'
        ]
    )
]
 
# ВАШ КОД ТУТ

def res(func):
    def search(dirs, filename, ways = [], ways_now = '/'):

        """
        Using a substitution.
        """

        result=func(dirs, filename, ways = [], ways_now ='/')
        return result
    return search


def filter(List, files = [], tuples = []):
    """
    Transferring everything that is in the folder.
    """
    for i in List:
        if isinstance(i, tuple):
            tuples.append(i)
        else:
            files.append(i)
    result_1 = files[:]
    result_2 = tuples[:]
    files.clear()
    tuples.clear()
    return result_1, result_2


def read_tuple(Tuple):
    """
    Returning the name of the folder and content.
    """
    lst = list(Tuple)
    return lst[0], lst[1:]


def end(dirs, filename, ways = [], ways_now = '/'):
    files, tuples = filter(dirs)

    for i in files:
        if i == filename:
            if ways_now == '/':
                ways.append(filename)
            else:
                ways.append(ways_now + '/' + filename)
                
    for i in tuples:
        head,lst = read_tuple(i)
        if ways_now == '/':
            ways_now_real = ways_now + head
        else:   
            ways_now_real = ways_now + '//' + head
        end(lst[0], filename, ways, ways_now_real)
    
    return ways


search = res(end)

# ПЕРЕВІРКА

print(search(dirs, 'file1'))
print(search(dirs, 'file2'))
print(search(dirs, 'file3'))
print(search(dirs, 'file4'))
print(search(dirs, 'file5'))
print(search(dirs, 'file6'))
print(search(dirs, 'folder1'))
 
assert search(dirs, 'file1') == ['/folder1/file1'], 'Failed test for file1'
assert search(dirs, 'file2') == ['/folder1/folder2/file2'], 'Failed test for file2'
assert search(dirs, 'file3') == ['/folder1/folder2/file3', '/folder1/folder3/file3', '/folder1/folder3/folder4/file3'], 'Failed test for file3'
assert search(dirs, 'file4') == ['/folder1/folder3/file4'], 'Failed test for file4'
assert search(dirs, 'file5') == ['/folder1/file5'], 'Failed test for file5'
assert search(dirs, 'file6') == [], 'Failed test for file6'
assert search(dirs, 'folder1') == [], 'Failed test for folder1'
print('All tests good!')
 

Вложения

  • Screenshot_7.png
    Screenshot_7.png
    25,6 КБ · Просмотры: 0

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
почему выдает ошибку
В этой строке лишний слеш
Python:
ways_now_real = ways_now + '//' + head
если ее заменить на такую
Python:
ways_now_real = ways_now + '/' + head
то проверка проходит
 

Форум IT Специалистов