python代码狗 2020-01-03 21:42 采纳率: 100%
浏览 137
已采纳

麻烦问下我的这段代码为什么运行结果跟我想的不一样,求指导?

主要问题是在下面的for嵌套循环的地方,按我的理解代码运行出来不应该是那样的结果,但是我不明白它为何会运行出来那样的结果,代码如下:

unit=input('请输入单元号:')
floor=int(input('请输入楼层:'))
end_number=[]
first_room_info={}
while True:
    room_end_input=input('请输入户室尾数:(01,02的形式):')
    end_number.append(room_end_input)
    room_number=int('1'+room_end_input)
    direction=input('请输入房间朝向(南北输入1,东西输入2):')
    area=input('请输入房间面积(单位平米):')
    first_room_info[room_number]=[direction,area]
    choice=input('是否输入下一个户室,y为继续输入,其他选择退出:')
    if choice=='y':
        pass
    else:
        break
room_info={}
next_room_info={}
room_info[1]=first_room_info
for a in range(2,floor+1):
    for i in range(len(end_number)):
        number=str(a)+end_number[i]
        info=first_room_info[int('1'+end_number[i])]
        next_room_info[number]=info
    room_info[a]=next_room_info
    print(next_room_info)
    print(room_info)

当我输入相应的信息后,终端得到的结果如下:
图片说明

注意标红线的地方,相当于在执行a为3的时候把已经保存在room_info字典里的数据用新得到的数据给替换了,但是我理解他这个for循环的嵌套不应该这么执行啊,应该是这样子的结果啊,如下图:
图片说明

这样子的话才应该是我觉得合理的结果,希望能得到大佬的讲解,不胜感激!!!

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-01-04 00:12
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器