Python按输入家庭成员数量循环采集数据并存储到DataFrame的实现求助
问题解决代码与说明
原代码存在的核心问题
- 输入家庭成员数量的
while循环没有增加1-9的范围校验,也没有设置跳出逻辑,会无限循环 - 整数类型的
familynumber不能直接用for遍历,需要配合range()生成可遍历序列 - 每次循环采集的信息会直接覆盖之前的变量,无法存储多个家庭成员的独立数据
- 最终DataFrame的构造逻辑有误,仅能存储最后一位成员的信息
修正后可运行代码
import pandas as pd # 采集合法的家庭成员数量 while True: try: familynumber = int(input("请问你需要录入几位家庭成员的信息?请输入1-9之间的数字:")) if 1 <= familynumber <= 9: break else: print("输入错误,请输入1到9之间的整数") except ValueError: print("输入格式错误,请输入有效整数") # 存储所有成员数据的列表,也支持生成单独的专属变量 family_data = [] for i in range(familynumber): print(f"\n===== 正在录入第{i+1}位家庭成员信息 =====") age = int(input("请输入年龄:")) ldlc = int(input("请输入LDL-C水平:")) totalc = int(input("请输入总胆固醇水平:")) clinicalCAD = int(input("是否患有临床冠状动脉疾病?是输入1,否输入0:")) gender = input("请输入性别:").lower() onsetAge = int(input("请输入冠状动脉疾病发病年龄:")) tx = int(input("是否有腱黄瘤?是输入1,否输入0:")) # 加入汇总列表 family_data.append([age, ldlc, totalc, clinicalCAD, gender, onsetAge, tx]) # 若需要生成每个成员的专属独立变量,放开下面一行注释即可,输入3人时会自动生成p1_input/p2_input/p3_input三个独立变量 # locals()[f'p{i+1}_input'] = pd.DataFrame([age, ldlc, totalc, clinicalCAD, gender, onsetAge, tx], columns=['指标值'], index=['年龄','LDL-C','总胆固醇','临床CAD','性别','CAD发病年龄','腱黄瘤']) # 生成所有成员的汇总DataFrame all_family_df = pd.DataFrame(family_data, columns=['年龄','LDL-C','总胆固醇','临床CAD','性别','CAD发病年龄','腱黄瘤']) # 打印结果验证 print("\n所有家庭成员信息汇总:") print(all_family_df)
内容的提问来源于stack exchange,提问作者Austin Meredith
相关产品推荐
相关产品推荐

