Добавьте входные данные в список параметров метода

#python #python-3.x

Вопрос:

Я использую общий локальный crud, поэтому я могу реализовать один и тот же метод для каждого отдельного списка, но при попытке добавить значение в список он не обновляет корневой список, но параметр, который он обновляет, какая-нибудь помощь?

 def crud(name, lista):
    print('----------------------------')
    print(name.capitalize())
    print('----------------------------')
    print('t[1] . Ingresar')
    print('t[2] . Consultar')
    print('t[3] . Eliminar')
    print('t[4] . Actualizar')
    print('t[5] . Listar')
    opcion = int(input('OPCIÓN >>> '))

    if opcion == 1:
        lista.append(input('Ingrese nombre del ' str(name[:-2]) ': '))
    if opcion == 2:
        node_id = int(input('Ingrese id del ' str(name[:-2]) ' a consultar: '))
    elif opcion == 5:
        i = 0
        while i <= len(lista)-1:
            print('t[' str(i) '] . ' str(lista[i]))
            i  = 1

while True:
    print('----------------------------')
    print('ALMACÉN MARKET-CICLE')
    print('PROGRAMA PRINCIPAL')
    print('----------------------------')
    print('t[1] . Vendedores')
    print('t[2] . Productos')
    print('t[3] . Clientes')
    print('t[4] . Ventas')
    print('t[5] . SALIR')
    opcion = int(input('OPCIÓN >>> '))

    lista_vendedores = []
    lista_productos = []
    lista_clientes = []

    if opcion == 1:
        crud('vendedores', lista_vendedores)
    if opcion == 2:
        crud('productos', lista_productos)
    if opcion == 3:
        crud('clientes', lista_clientes)
    elif opcion == 5:
        break
 

Если я печатаю параметр «lista» при добавлении нового значения, он возвращает список с новым значением, но когда я ввожу опцию списка, список отображается пустым.

Комментарии:

1. Определите списки перед циклом….

Ответ №1:

Вы создаете новый пустой список на каждой итерации while True:

 def func(items):
    items.append(1)
    print(items)
   
while True:
    foobar = []
    func(foobar)
 

всегда буду давать [1] , а не [1] , [1,1] ,….

Не запускайте вышеописанное, он будет просто занят, пока не взорвется.

Чтобы решить вашу проблему, вам нужно объявить список один раз, вне вашего интерактивного цикла.