如何无需声明cat1、cat2等独立变量实现动态录入猫咪信息并输出表格
解决方案
核心实现逻辑是用动态容器存储结构化数据,不需要提前定义固定数量的独立变量:用可自由扩容的列表存储所有猫咪信息,每只猫咪的毛色、年龄等属性用字典封装,不管用户输入多少只猫咪都能适配。
无第三方依赖的完整实现
# 初始化存储所有猫咪信息的空列表 cats = [] # 第一步:获取合法的猫咪数量输入 while True: try: cat_count = int(input("请输入你饲养的猫咪数量:")) if cat_count <= 0: print("请输入大于0的正整数") continue break except ValueError: print("输入格式错误,请输入数字") # 第二步:循环采集每只猫咪的信息 for i in range(cat_count): print(f"\n正在采集第{i+1}只猫咪的信息:") color = input("请输入猫咪的毛色:").strip() # 年龄输入做简单校验 while True: try: age = float(input("请输入猫咪的年龄(单位:岁):")) if age < 0: print("年龄不能为负数,请重新输入") continue break except ValueError: print("输入格式错误,请输入数字") # 单猫信息存入字典后追加到总列表 cats.append({ "序号": i+1, "毛色": color, "年龄(岁)": age }) # 第三步:打印信息表格 print("\n=== 猫咪信息统计表 ===") # 打印表头 print(f"| {'序号':<4} | {'毛色':<10} | {'年龄(岁)':<8} |") print(f"|{'-'*6}|{'-'*12}|{'-'*10}|") # 遍历列表打印每只猫的信息 for cat in cats: print(f"| {cat['序号']:<4} | {cat['毛色']:<10} | {cat['年龄(岁)']:<8} |")
可选:更美观的表格输出
如果需要更规整的表格样式,可以使用Python第三方库tabulate,安装命令为pip install tabulate,替换上面的第三步打印逻辑即可:
from tabulate import tabulate print("\n=== 猫咪信息统计表 ===") print(tabulate(cats, headers="keys", tablefmt="grid"))
效果示例
请输入你饲养的猫咪数量:3
正在采集第1只猫咪的信息:
请输入猫咪的毛色:橘猫
请输入猫咪的年龄(单位:岁):2.5正在采集第2只猫咪的信息:
请输入猫咪的毛色:银渐层
请输入猫咪的年龄(单位:岁):1正在采集第3只猫咪的信息:
请输入猫咪的毛色:奶牛猫
请输入猫咪的年龄(单位:岁):4=== 猫咪信息统计表 ===
序号 毛色 年龄(岁) 1 橘猫 2.5 2 银渐层 1.0 3 奶牛猫 4.0
内容的提问来源于stack exchange,提问作者jimmyjohnjill
相关产品推荐
相关产品推荐

