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

Python读取用户输入姓名生成序号键字典时所有值相同问题排查

代码问题诊断与修复

问题原因

你代码的错误来自构建字典的双重嵌套循环逻辑冗余且错误:
外层循环遍历序号i时,内层会完整遍历所有已存储的姓名,每一轮外层循环都会反复覆盖Stu_Rec[i]的值,最终所有键对应的值都会被覆盖为最后一个输入的姓名,因此输出全是Ravana。
同时你不需要额外定义Names列表存储姓名,输入时可以直接存入字典,减少不必要的内存占用。

修复方案

最简修改版(无需单独存储姓名列表)

def details():
    Stu_Rec = {}
    print("Enter the Id :\n")
    Id = int(input())
    for i in range(Id):
        print("\nEnter the Name ")
        Name = input()
        Stu_Rec[i] = Name
    return Stu_Rec

if __name__ == "__main__": 
    Details = details()
    print(Details)

保留姓名列表的修改版

如果你后续需要用到所有姓名的列表,只需把原来的双重循环替换为单层循环即可:

def details():
    Stu_Rec = {}
    Names = list()
    print("Enter the Id :\n")
    Id = int(input())
    for i in range(0,Id):
        print("\nEnter the Name ")
        Name = input()
        Names.append(Name)
    # 替换原双重循环
    for i in range(Id):
        Stu_Rec[i] = Names[i]
    return Stu_Rec

if __name__ == "__main__": 
    Details = details()
    print(Details)

以上两种修改方式运行后,都可以得到你期望的{0: 'Rama', 1: 'Sita', 2: 'Ravana'}输出结果。

内容的提问来源于stack exchange,提问作者SUBARAM RAM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:18:01