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

如何修复字典函数实现人员添加与全部打印功能?

问题分析与解决

嘿,我一眼就发现问题所在啦!你的代码里数据被覆盖的原因很明确:

问题根源

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:42:25