You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:27:03