Python中基于if-else向不同列表追加元素的问题求助
Python程序分配教练到学员数量区间时得到空列表的问题解决
先看你初始代码的核心问题:
- 第一个输入循环中,你获取了教练姓名和新学员数,但从未把这些输入存入
trainerNames或newMembers列表,导致后续遍历newMembers时列表始终为空,自然不会有数据被分到区间列表里。 - 遍历
newMembers的逻辑错误:你试图取userInputMembers[1],但newMembers是空的,且你也没把输入的姓名和学员数存成子列表放入该列表。 - 后续错误地将
trainerNames赋值为它的长度,破坏了原列表结构,导致输出Number of Trainers: []这种异常结果。
再看你修改后的代码,已经修复了输入存储的问题,但存在多余且错误的判断:
if type(n) == int:完全没必要,因为你已经用int(input(...))把输入转成整数了。更关键的是,n是外层输入循环的变量,只会保留最后一位教练的学员数,用它判断当前遍历的教练数据逻辑完全错误。
修正后的完整代码
# 初始化各区间列表 range_0_5 = [] range_6_10 = [] range_11_15 = [] # 存储所有教练的信息(姓名+新学员数) trainers_data = [] # 获取用户输入,这里默认处理15位教练,也可改为让用户输入数量 trainer_total = 15 for i in range(1, trainer_total + 1): name = input(f"请输入第{i}位教练的姓氏: ") # 增加异常处理,避免非数字输入导致崩溃 try: member_count = int(input(f"请输入第{i}位教练的新学员数量: ")) except ValueError: print("请输入有效的数字!跳过当前教练信息录入") continue trainers_data.append([name, member_count]) # 将教练分配到对应区间 for trainer in trainers_data: num = trainer[1] if 0 <= num <= 5: range_0_5.append(trainer) elif 6 <= num <= 10: range_6_10.append(trainer) elif 11 <= num <= 15: range_11_15.append(trainer) else: print(f"教练{trainer[0]}的新学员数{num}无对应分类") # 输出最终统计结果 print(len(range_0_5), "位教练的新学员数在0-5区间") print(len(range_6_10), "位教练的新学员数在6-10区间") print(len(range_11_15), "位教练的新学员数在11-15区间")
关键修正点
- 确保输入的教练信息被正确存入
trainers_data列表,每个元素是包含姓名和学员数的子列表。 - 移除了多余的类型判断,输入已通过
int()转为整数,无需重复验证。 - 区间判断逻辑更严谨,明确了上下限范围。
- 增加异常处理,避免用户输入非数字导致程序崩溃。
- 变量名更具可读性,避免
newMembers1这类模糊命名。
内容的提问来源于stack exchange,提问作者Selah
相关产品推荐
相关产品推荐

