如何修复字典函数实现人员添加与全部打印功能?
问题分析与解决
嘿,我一眼就发现问题所在啦!你的代码里数据被覆盖的原因很明确:
问题根源
在agregar()函数中,你每次都是把新创建的学生字典赋值给字典libro里的固定键'rut':
libro['rut'] = estudiante
这就意味着每添加一个新学生,都会把之前存在'rut'键下的旧数据完全覆盖掉,所以最后libro里只会保留最后一次添加的学生信息。
修复方案
我们需要用每个学生独有的rut值作为libro字典的键,这样每个学生的信息都会存储在独立的键位下,不会互相覆盖。同时要调整imprimir()的调用时机,满足你“添加完所有人员后一次性打印”的需求。
修改后的完整代码如下:
libro = {} def agregar(rut, nombre, edad): estudiante = {} estudiante['rut'] = rut estudiante['nombre'] = nombre estudiante['edad'] = edad # 用传入的rut作为libro的键,而不是固定的'rut' libro[rut] = estudiante def imprimir(): for rut in libro: estudiante = libro[rut] print(estudiante['rut'], estudiante['nombre'], estudiante['edad']) def main(): contador = 0 while contador < 2: rut = input("rut: ") nombre = input("nombre: ") edad = input("Edad: ") contador = contador + 1 agregar(rut, nombre, edad) # 把imprimir()移到while循环外面,完成所有添加后再打印 imprimir() main()
验证效果
当你依次输入:
- rut=1、nombre=1、edad=1
- rut=2、nombre=2、edad=2
程序会在两次输入完成后,一次性打印出两条人员信息,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Treyon Daren
相关产品推荐
相关产品推荐

