我正在编写一个程序,允许用户输入甚至数量的玩家,然后它将生成循环赛锦标赛计划。 n/2 * n-1
个游戏数量,以便每个玩家与其他玩家一起玩。
现在我很难生成用户输入的玩家数量列表。我收到此错误:
TypeError:' int'对象不可迭代。
我的程序中出现了很多这样的错误,所以我想我并不完全理解Python的这一部分,所以如果有人能够解释这一点,我也会很感激。
def rounds(players, player_list):
"""determines how many rounds and who plays who in each round"""
num_games = int((players/2) * (players-1))
num_rounds = int(players/2)
player_list = list(players)
return player_list
答案 0 :(得分:6)
如果您只想获得一个数字列表,您可能需要range()
函数。
对于实际的循环赛,您应该查看itertools.combinations
。
>>> n = 4
>>> players = range(1,n+1)
>>> players
[1, 2, 3, 4]
>>> list(itertools.combinations(players, 2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
答案 1 :(得分:4)
player_list= list(players)
是什么引发了TypeError
。发生这种情况是因为list()
函数只知道如何对可以迭代的对象进行操作,并且int
不是这样的对象。
从评论中,您似乎只想创建一个包含玩家编号(或名称或索引)的列表。你可以这样做:
# this will create the list [1,2,3,...players]:
player_list = range(1, players+1)
# or, the list [0,1,...players-1]:
player_list = range(players) # this is equivalent to range(0,players)