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

Python面向对象程序循环仅返回第三个Procedure数据集问题求助

问题分析与解决方案

你的代码之所以只返回第三个Procedure的数据,核心问题有两个:

  • 循环内部连续三次给同一组变量(procedure_name、date_of等)赋值,后面的赋值会直接覆盖前面的内容,导致每次循环最后创建的都是「Blood test」对应的实例,前两次的赋值完全无效。
  • 循环外的print语句仅在循环结束后执行一次,此时i的值为2(range(3)的最后一个元素),自然只会输出最后创建的那个实例。

修正方案一:用列表存储数据,循环遍历创建实例

把三个检查的参数提前存在列表里,循环遍历列表即可逐个创建实例并输出:

# 存储三个检查的所有参数
procedures_data = [
    ("Physical Exam", "Nov 6th 2022", "Dr. Irvine", "$ 250.00"),
    ("X-ray", "Nov 6th 2022", "Dr. Jamison", "$ 500.00"),
    ("Blood test", "Nov 6th 2022", "Dr. Smith", "$ 200.00")
]

# 遍历数据创建实例并输出
for idx, data in enumerate(procedures_data, start=1):
    name, date, doctor, charge = data
    procedure = HW6_RODRIGUEZ_1.Procedure(name, date, doctor, charge)
    print(f'Procedure {idx}')
    print(procedure)
    print(idx-1, end=" ")

修正方案二:直接创建三个独立实例

如果不需要循环,也可以直接分别创建三个命名实例,再逐个输出:

# 创建三个独立的Procedure实例
proc1 = HW6_RODRIGUEZ_1.Procedure("Physical Exam", "Nov 6th 2022", "Dr. Irvine", "$ 250.00")
proc2 = HW6_RODRIGUEZ_1.Procedure("X-ray", "Nov 6th 2022", "Dr. Jamison", "$ 500.00")
proc3 = HW6_RODRIGUEZ_1.Procedure("Blood test", "Nov 6th 2022", "Dr. Smith", "$ 200.00")

# 逐个输出实例信息
print('Procedure 1')
print(proc1)
print(0, end=" ")
print('\n')
print('Procedure 2')
print(proc2)
print(1, end=" ")
print('\n')
print('Procedure 3')
print(proc3)
print(2, end=" ")

以上两种方式都能让你得到三个不同的Procedure实例并完整输出所有数据。

内容的提问来源于stack exchange,提问作者Linest Penguinus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:20:36