Python新手:男女身高统计代码错误排查及问题解析
问题分析与修正
你的代码核心问题是逻辑偏离计算平均身高的目标,同时存在多处语法和逻辑错误,下面逐条拆解并给出修正方案:
主要错误点
- 数据结构初始化错误:
max_height_M = [0]仅初始化了一个元素,但你需要分别存储Ж(女性)、Ч(男性)两类数据,应改为对应两个性别的结构。person_name = [0] * 7完全冗余,7个元素和性别分类毫无关联,无需这样初始化。
- 性别分类逻辑缺失:
循环里固定执行indexPerson = K.index("Ж"),导致只处理女性数据,男性完全没被纳入统计,根本没实现分类的要求。 - 无效冗余代码:
最后一段indexPerson[2] = K.index[0]完全错误——indexPerson是单个整数而非列表,K.index是方法必须加括号调用(如K.index("Ч")),这段代码既无法运行,也和计算平均身高的目标无关。 - 目标偏离:
你要计算的是平均身高,但原代码一直在尝试找最高身高,没有统计每个性别的总身高和人数,根本无法计算平均值。
修正后的代码(计算不同性别平均身高)
用字典存储每个性别的总身高和人数会更清晰,代码如下:
# 定义性别对应中文说明 GENDER_LABEL = {'Ж': '女性', 'Ч': '男性'} # 原始人员数据 people_list = [ 'Іванов І.І. Ч 1951 172', 'Петрова П.І. Ж 1975 165', 'Сидоров Р.П. Ч 1986 180', 'Кот І.В. Ж 1981 168', 'Салата М.В. Ж 1991 170', 'Бурий П.П. Ч 1975 180', 'Сірий К.В. Ч 1941 167', 'Махмуд К.М. Ч 1993 175', 'Солодка Н.В. Ж 1965 168', 'Рибка Т.М. Ж 1986 170', 'Сухий В.В. Ч 1976 183', 'Крутий П.Р. Ч 2001 176', 'Хоматова Р.П. Ж 1975 169' ] # 初始化统计字典:键为性别标识,值为[总身高, 人数] gender_stats = {'Ж': [0, 0], 'Ч': [0, 0]} for person_info_str in people_list: # 拆分每行数据,提取性别和身高 info_parts = person_info_str.split() gender = info_parts[-3] # 性别位于倒数第三个位置 height = int(info_parts[-1]) # 更新对应性别的统计数据 gender_stats[gender][0] += height gender_stats[gender][1] += 1 # 计算并输出平均身高 for gender_code, (total_h, count) in gender_stats.items(): if count == 0: print(f"{GENDER_LABEL[gender_code]}无有效数据") else: avg_height = total_h / count print(f"{GENDER_LABEL[gender_code]}平均身高: {avg_height:.1f} cm")
代码说明
- 用字典
gender_stats分别记录每个性别的总身高和人数,结构清晰易维护。 - 遍历原始数据时,正确提取性别和身高值,对应更新统计项。
- 最后遍历统计字典,计算并格式化输出平均身高,同时处理了人数为0的边界情况(避免除以0错误)。
内容的提问来源于stack exchange,提问作者Pseudosphere
相关产品推荐
相关产品推荐

