先给大家看一下代码部分
body_id = 1 # 编号从1开始 User_Information = {} # 用户基本信息字典 bodies = {} while 1: name = input("请输入姓名: ") # 输入姓名 weight = int(input("请输入体重(单位Kg): ")) # 输入体重 height = int(input("请输入身高(单位CM): ")) # 输入身高 BMI = weight / (height / 100) ** 2 # 计算BMI值 User_Information["name"] = name # 录入姓名 str User_Information["weight"] = weight # 录入体重 int User_Information["height"] = height # 录入身高 int User_Information["BMI"] = BMI # 录入BMI Float bodies[body_id] = User_Information # ID对应用户基本信息 Keep_on = input("是否继续输入(Y/N): ") if Keep_on.upper() == "Y": body_id += 1 else: break print(bodies)
User_Information = {} 放到while里面去。
emmm,我记得之前我就是这样的,然后也是覆盖,我就试着放到上边了,怎么到头来还是要在下边
@清风吹杨柳: 放在while外面,只初始化了一次,意外着是一个对象,不管你while多少次都是修改的同一个对象。只是将同一个对象加入到数组N次。
@czd890: 谢谢指点
首先,你要理解一下 字典这种数据结构他是Key-value这种结构的,key是不可以重复的;你当前写的,第一次完成赋值后,第二次再循环就给他覆盖了,修改的是同一个字典;你可以吧这个字典放到一个列表里
body_id = 1 # 编号从1开始 User_Information = {} # 用户基本信息字典 bodies = {} listUser=[]#列表 while 1: name = input("请输入姓名: ") # 输入姓名 weight = int(input("请输入体重(单位Kg): ")) # 输入体重 height = int(input("请输入身高(单位CM): ")) # 输入身高 BMI = weight / (height / 100) ** 2 # 计算BMI值 User_Information["name"] = name # 录入姓名 str User_Information["weight"] = weight # 录入体重 int User_Information["height"] = height # 录入身高 int User_Information["BMI"] = BMI # 录入BMI Float bodies[body_id] = User_Information # ID对应用户基本信息 Keep_on = input("是否继续输入(Y/N): ") if Keep_on.upper() == "Y": body_id += 1 listUser.append(User_Information)#加到列表里 else: break print(bodies) print(User_Information)
谢谢,已解决,还是感谢
User_Information = {} 放在循环里面。