Моя функция симметрии c разницы не возвращает ничего, и я не могу понять, почему - PullRequest
0 голосов
/ 28 мая 2020

Пытаясь решить проблему симметрии c разности freecodecamp (https://www.freecodecamp.org/learn/coding-interview-prep/algorithms/find-the-symmetric-difference), я написал следующую функцию:

def symdiff(*args):
    dump = [x for x in args[0] if x in args[1]]
    result = [x for x in args[0] + args[1] if x not in dump]    
    if len(args) == 2:
        return result
    else:
        symdiff(result, *args[2:])
var = symdiff([1, 2, 3], [3, 2, 0], [7, 2, 6])
print(var)

Значение var оказывается None. Это почему? Я ожидал, что это будет [7, 2, 6, 1, 0]. Я ввел печать (результат) непосредственно перед возвращением результата, и он напечатал правильный ответ.

1 Ответ

0 голосов
/ 28 мая 2020

В вашем блоке else вам нужно вернуть symdiff.

def symdiff(*args):
    dump = [x for x in args[0] if x in args[1]]
    result = [x for x in args[0] + args[1] if x not in dump]    
    if len(args) == 2:
        return result
    else:
        return symdiff(result, *args[2:])
var = symdiff([1, 2, 3], [3, 2, 0], [7, 2, 6])
print(var)

Приведенный выше код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...