首页 > 解决方案 > 具有不同数量团队的随机团队生成器

问题描述

所以我即将学习如何在 python 中编码,因此我正在尝试制作一个随机团队生成器,如下所示。

目前,我有一个输出。但是,我的输出不是我想要的。我一直在寻找一种方法来保存 while 循环中的数据并将其导出到在 for 循环中创建的列表中并每次保存数据。然而,这似乎是一项不可能完成的任务。

#team selector
import random
player_list=[]
players=int(input('input number of players: '))
teams= int(input('input number of teams: '))

if players<teams:
    print('to many teams, to few players')
else:
    
    for i in range(0, players):
        names =input('input player {0}: '.format(i+1))
        player_list.append(names)
    print(player_list)
    
    while len(player_list)>0:
        for i in range(0, teams):
            q=i+1
            teamq=[]
            
            while len(player_list)>0:
                z=i+1
                playerz=random.choice(player_list)
                teamq.append(playerz)
                player_list.remove(playerz)
                break
                
                if player_list==[]:
                    break
         
            print('team {0} is '.format(q), teamq)

所以目前我的输出是例如

input number of players: 5
input number of teams: 3
input player 1: James
input player 2: peter
input player 3: john
input player 4: ann
input player 5: Jackson
['James', 'Peter', 'John', 'Ann', 'Jackson']
team 1 is  ['Peter']
team 2 is  ['Jackson']
team 3 is  ['James']
team 1 is  ['Ann']
team 2 is  ['John']
team 3 is  []

而我想要的是

input number of players: 5
input number of teams: 3
input player 1: James
input player 2: peter
input player 3: john
input player 4: ann
input player 5: Jackson
['James', 'Peter', 'John', 'Ann', 'Jackson']
team 1 is  ['Peter', 'Ann']
team 2 is  ['Jackson', 'John']
team 3 is  ['James']

谁能帮我?

标签: python

解决方案


抱歉,亲爱的,它仅适用于球员完全被球队整除的那些数字:

例如玩家 = 6

团队 = 3

import random
player_list=[]
players=int(input('input number of players: '))
teams= int(input('input number of teams: '))

if players<teams:
    print('to many teams, to few players')
else:
    for i in range(0, players):
        names =input('input player {0}: '.format(i+1))
        player_list.append(names)
    print(player_list)
    
max_members = players//teams

teams_2d_list = [[] for i in range(teams)]


for i in range(teams):
    for j in range(max_members):
        if len(player_list) == 0:
            break
        a_rand_player = player_list.pop(random.randint(0,len(player_list)-1)) 
        #get a random element from player_list them pop/remove it 
        teams_2d_list[i].append(a_rand_player)
print("\n",teams_2d_list)
        
for i in range(teams):
    print("team{} ".format(i),"is ",teams_2d_list[i])
        

输出:

[['bcd', 'abc'], ['jkp', 'sour'], ['def', 'fgh']]
team0 is ['bcd', 'abc']
team1 is ['jkp', 'sour']
team2 is ['def', 'fgh']

推荐阅读