-1

我正在尝试创建一个将字符串作为输入的函数,确定列表中有多少支球队和球员,并将球员随机分组。我正在使用不和谐机器人作为上下文,但这并不重要。

我试图将一个数字与相应团队的空列表相关联,但字典不允许其中的列表,我不知道两个如何关联两个值。

def PickTeam(string):
    teamNum = number_of_teams
    PlayerList = just_assume_this_is_a_good_list
    team1 = []
    team2 = []
    team3 = []
    team4 = []
    teamDict = { 1:team1 , 2:team2 , 3:team3 }
    while teamNum > 0:
        for i in teamNum:
            addPlayer = choice(PlayerList)
            addTeam = teamDict[i]
            addTeam.append(addPlayer)
    for i in teamNum:
        teamPub = teamDict[i]
        print(teamPub)

我希望能够输入多个团队和名称列表,例如“2”和“比利、苏西、弗兰克、卢克、肯西、杰克”,并让输出说“比利、卢克、苏西” , "Frank, Jack, Kensie",但现在没有输出,因为脚本停在字典保存列表中。任何帮助将不胜感激,谢谢!

4

1 回答 1

1

你似乎对基本的 Python 语法有一些问题,比如ifvs while,以及如何循环 N 次。

此外,似乎不需要字典。您可以只使用列表列表。

请参阅Python - 将列表随机划分为 n 个几乎相等的部分,以了解将玩家随机分为 N 个团队的简单方法。

def PickTeam(number_of_teams, player_names):
    PlayerList = player_names.split(", ")
    random.shuffle(PlayerList)
    teams = [PlayerList[i::number_of_teams] for i in range(number_of_teams)]
    return teams

for team in PickTeam(2, "Billy, Susie, Frank, Luke, Kensie, Jack"):
    print(team)

在列表推导PlayerList[i::number_of_teams]中,是PlayerList列表的一部分,从 elementi开始,到列表的末尾,获取每个number_of_teams元素。所以如果number_of_teams3,它将创建一个包含 3 个子列表的列表。第一个子列表将是:

[PlayerList[0], PlayerList[3], PlayerList[6], ...]

第二个将是:

[PlayerList[1], PlayerList[4], PlayerList[7], ...]

第三个将是:

[PlayerList[2], PlayerList[5], PlayerList[8], ...]

演示

于 2019-04-19T00:29:39.587 回答