You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 15:45:03