Python调用CRUD方法向列表传参追加值后根列表未更新问题求助
问题原因
你的三个业务存储列表的初始化逻辑放在了while True主循环内部,每次用户完成操作回到主菜单时,循环都会重新执行一次初始化代码,将所有列表重置为空,因此上次操作写入的数据会全部丢失。
修复方法
将三个列表的初始化代码移动到主循环外部,程序运行全程只会初始化一次,所有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])+': ')) elif 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 # 列表初始化移到主循环外部 lista_vendedores = [] lista_productos = [] lista_clientes = [] 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 >>> ')) if opcion == 1: crud('vendedores', lista_vendedores) elif opcion == 2: crud('productos', lista_productos) elif opcion == 3: crud('clientes', lista_clientes) elif opcion == 5: break
补充优化说明
原代码中crud函数内opcion == 1的判断用了独立if语句,后续opcion == 2也用了独立if,会导致选1之后还会走后续的条件判断逻辑,统一改成elif可避免冗余执行。
内容的提问来源于stack exchange,提问作者Carlos Rodriguez
相关产品推荐
相关产品推荐

