python - 具有不同数量团队的随机团队生成器
问题描述
所以我即将学习如何在 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']
谁能帮我?
解决方案
抱歉,亲爱的,它仅适用于球员完全被球队整除的那些数字:
例如玩家 = 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']
推荐阅读
- c# - ObservableCollection 上的 CollectionChanged 事件不监听项目更新
- node.js - 当我尝试直接在 package.json 文件中执行脚本时,nodejs __dirname 是一个点
- css - 在移动设备上滚动下拉菜单不起作用
- python - 如何更改所有包含数字的字符串单元格以在熊猫中一次全部浮动?
- angular - 如何获取未更新的响应式表单数据?
- c - 为什么共享库必须是位置独立的,而静态库不是?
- c++ - 将输入流转换为双向量
- elasticsearch - Kibana {"statusCode":403,"error":"Forbidden","message":"Forbidden"}
- javascript - 为什么递归函数中特别需要“null”?
- javascript - jQuery按钮切换文本在onlick上不起作用