Не получается сделать списки в списке при выводе

Напишите функцию register(surname, name, date, middle_name, registry).

Эта функция принимает на вход фамилию, имя, дату рождения (в виде кортежа из трёх чисел — день, месяц, год), отчество и список, в который необходимо сохранить полученные аргументы в виде кортежа в следующем порядке:

фамилия, имя, отчество, день, месяц, год рождения

Функция возвращает список, в который добавила запись.

# [('Petrova', 'Maria', 'Ivanovna', 13, 3, 2003), ('Ivanov', 'Sergej', None, 24, 9, 1995), ('Smith', 'John', None, 13, 2, 2003)]


def register(surname, name, date, middle_name = None, registry = None): 
    r = list()
    if registry == None: return list(surname, name, middle_name, *date)
    elif middle_name == None: return registry + list(surname, name, *date)
    return list(surname, name, middle_name, *date)

reg = register('Petrova', 'Maria', (13, 3, 2003), 'Ivanovna')
reg = register('Ivanov', 'Sergej', (24, 9, 1995), registry=reg)
reg = register('Smith', 'John', (13, 2, 2003), registry=reg)
print(reg)

Ответы (1 шт):

Автор решения: GrAnd

Вроде в условии сказано, что "в функцию передаётся список, в который необходимо сохранить полученные аргументы в виде кортежа". Так что просто дополняйте его очередным кортежом.

def register(surname, name, date, middle_name = None, registry = []): 
    registry.append((surname, name, middle_name, *date))

reg = []
register('Petrova', 'Maria', (13, 3, 2003), 'Ivanovna', registry=reg)
register('Ivanov', 'Sergej', (24, 9, 1995), registry=reg)
register('Smith', 'John', (13, 2, 2003), registry=reg)
print(reg)
→ Ссылка