我想创建一个函数,其中包含用户输入的名称列表。如果有偶数玩家,它将随机打印出名称,直到没有剩下的名字。如果有一个奇数,它将为输入的姓氏分配一个变量名,然后从列表中删除它。然后它会和偶数玩家一样。我希望以后能够在程序中使用姓氏。
这是我到目前为止所拥有的。这给了我一个错误的阅读,
"提出ValueError," randrange()的空范围(%d,%d,%d)" % (istart,istop,width)"
def randName(teamNames):
if len(teamNames) % 2 ==0:
randomname = random.randrange(0, len(teamNames))
return teamNames.pop(randomname)
else:
lastName = teamNames[-1]
teamNames.pop()
答案 0 :(得分:1)
from random import shuffle
def random_pairings(team_names):
# randomize order
team_names = list(team_names)
shuffle(team_names)
# remove 'odd man out'
leftover = team_names.pop() if len(team_names) % 2 else None
# get pairings
trick = [iter(team_names)] * 2 # two pointers to *same* iterator
pairs = list(zip(*trick))
return pairs, leftover
给出了
>>> random_pairings("abcdefg")
([('g', 'c'), ('d', 'f'), ('b', 'e')], 'a')
所以你可以像
一样使用它tennis_players = ["Dimitrov", "Herbert", "Sock", "Tomic", "Thiem"]
pairs, leftover = random_pairings(tennis_players)
for a,b in pairs:
print("{} vs {}".format(a, b))
if leftover:
print("{} sits this round out.".format(leftover))
给
Tomic vs Herbert
Sock vs Dimitrov
Thiem sits this round out.
答案 1 :(得分:0)
您只需使用randint
:
def randName(teamNames):
if len(teamNames) % 2 ==0:
randomname = random.randint(0, len(teamNames))
return teamNames.pop(randomname)
else:
lastName = teamNames[-1]
teamNames.pop()