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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?