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
相关产品推荐
相关产品推荐

