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

Python如何检查列表重复元素并在每组满3人时终止while循环

问题修正方案

原代码存在的问题

  • 缺少random模块导入,随机分组功能无法正常运行
  • 每次循环都会重新初始化可用名单列表,无法实现已分配姓名去重
  • 向分组列表中追加的是组号数字而非姓名,无法实现人员信息的正确存储与校验
  • 循环条件设置错误:当前len(group_1) <= 3 and len(group_2) <= 3会在两个组都达到3人时仍满足条件,导致分组人数超过3人的上限
  • 没有对随机分配的组进行容量校验,可能出现单组人数超出3人的情况

修正后代码

import random

def get_group():
    group_1 = []
    group_2 = []
    # 可用名单移到循环外部,方便动态删除已分配人员
    available_names = ["Tomás", "Fábio", "Rita", "Dany", "Inês", "Ana"]
    # 只要任意一组未满3人就继续循环,总人数刚好匹配两个组各3人的需求
    while len(group_1) < 3 or len(group_2) < 3:
        name = input("Tell me your name: ")
        if name in available_names:
            # 优先判断组容量,避免分配到已满的组
            if len(group_1) >= 3:
                given_group = 2
            elif len(group_2) >= 3:
                given_group = 1
            else:
                given_group = random.randint(1, 2)
            # 向分组追加用户姓名而非组号
            if given_group == 1:
                group_1.append(name)
            else:
                group_2.append(name)
            # 移除已分配姓名,防止重复录入
            available_names.remove(name)
            print("You are in group " + str(given_group))
        else:
            print("Name not available")
    else:
        print("Finish")

get_group()

调整说明

  • 动态维护可用名单,每次成功分配后删除对应姓名,从根源避免重复分配问题
  • 优化循环条件和分组分配逻辑,严格保证每个组的人数不超过3人,两个组都满员后自动终止循环
  • 修正分组数据存储逻辑,存入的是用户姓名而非无意义的组号数字,方便后续扩展人员查询功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:04