You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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区间")

关键修正点

  1. 确保输入的教练信息被正确存入trainers_data列表,每个元素是包含姓名和学员数的子列表。
  2. 移除了多余的类型判断,输入已通过int()转为整数,无需重复验证。
  3. 区间判断逻辑更严谨,明确了上下限范围。
  4. 增加异常处理,避免用户输入非数字导致程序崩溃。
  5. 变量名更具可读性,避免newMembers1这类模糊命名。

内容的提问来源于stack exchange,提问作者Selah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:00:24