如何遍历对象列表获取指定属性?Python代码仅返回9问题排查
问题原因
.weight的属性调用写法是完全正确的,问题出在getWeight函数的循环逻辑:
- 你当前的逻辑会在第一次循环时直接终止函数:如果第一个患者的体重和传入值匹配就返回对应对象,不匹配就直接返回9,根本不会遍历列表里剩下的p2、p3元素,因此你传入105查询时,第一次比对p1的体重155不匹配,就直接返回了9。
修复后的代码
只需要把返回9的逻辑移到循环外部,等所有元素遍历完成仍未找到匹配项时再返回即可:
from func import Patient p1 = Patient("John", 131, "03/09/03", 5.2, 155) p2 = Patient("Josh", 151, "05/18/05", 5.8, 195) p3 = Patient("Jacob", 179, "12/14/09", 6.5, 105) patientList = [p1, p2, p3] def getWeight(weight): for patient in patientList: if weight == patient.weight: return patient # 所有元素遍历完仍未匹配,再返回9 return 9 print(getWeight(105))
补充说明
上述代码还优化了遍历写法,Python中遍历列表元素不需要通过索引取值,直接迭代列表本身即可,可读性更高。
内容的提问来源于stack exchange,提问作者johndaly69
相关产品推荐
相关产品推荐

