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

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

主要问题是在下面的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
    已采纳
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题