Python编程问题:实现根据性别计算成员平均年龄的函数
问题分析与解决方案
你的代码存在的问题
- 打印位置错误:
print(names)写在循环内部,每匹配到一个符合条件的成员就会执行一次打印,所以会逐次输出列表的更新状态。 - 全局变量隐患:
names定义在函数外部,属于全局变量,多次调用average_age时,列表会不断累积之前调用的结果,导致数据混乱。 - 偏离需求逻辑:题目要求计算对应性别成员的平均年龄,但你当前代码在收集姓名,完全没有处理年龄相关的计算逻辑。
正确实现代码
def average_age(members, gender): # 在函数内部初始化年龄列表,避免全局变量问题 ages = [] for member in members: # 匹配指定性别,收集年龄(元组第二个元素,索引为1) if member[2] == gender: ages.append(member[1]) # 判断是否有匹配结果 if not ages: return 'No matches found.' # 计算平均年龄:总和除以数量 return sum(ages) / len(ages)
测试验证
用题目给出的示例数据测试:
members = [('John', 36, 'M'), ('Rachel', 24, 'F'), ('Deardrie', 78, 'F'), ('Ahmed', 17, 'M'), ('Sienna', 14, 'F')] # 测试男性平均年龄 print(average_age(members, 'M')) # 输出:26.5 # 测试女性平均年龄 print(average_age(members, 'F')) # 输出:38.666666666666664 # 测试无匹配的情况 print(average_age(members, 'X')) # 输出:No matches found.
额外优化建议
可以用列表推导式简化筛选年龄的步骤,让代码更简洁:
def average_age(members, gender): ages = [member[1] for member in members if member[2] == gender] return sum(ages)/len(ages) if ages else 'No matches found.'
内容的提问来源于stack exchange,提问作者tobs99
相关产品推荐
相关产品推荐

