Python随机超出范围

Python随机超出范围,python,Python,我正在用Python 3.3.3编写一个代码,如果输入say 12,它将列出32个团队,并确保重复次数最多的团队只比重复次数最少的团队重复一次。如果已经这样做: import random if run == '1': teams =[] randoms = [] team = 0 amount = 1 while team != "done": team = input("Please enter team name " + str(am

我正在用Python 3.3.3编写一个代码,如果输入say 12,它将列出32个团队,并确保重复次数最多的团队只比重复次数最少的团队重复一次。如果已经这样做:

import random
if run == '1':
    teams =[]
    randoms = []
    team = 0
    amount = 1
    while team != "done":
        team = input("Please enter team name " + str(amount) +" or enter 'done' if you have finished.\n")
        if team != "done":
            teams.append(team)
            randoms.append(team)
            amount = amount + 1
    length = len(teams)
    while len(teams) != 32:
        if len(teams) < 32-length:
            for x in range (0,length):
                teams.append(teams[x])
        else:
            number = random.randint(0,len(randoms))
            name = randoms[number]
            teams.append(name)
            randoms.remove(name)
        teams.sort()
    for x in range(0,len(teams)):
        print (teams[x])
随机导入
如果运行==“1”:
团队=[]
随机数=[]
团队=0
金额=1
而团队“完成”:
团队=输入(“请输入团队名称”+str(金额)+”或输入“完成”,如果您已经完成。\n”)
如果团队“完成”:
团队。追加(团队)
随机添加(团队)
金额=金额+1
长度=长度(队)
而len(团队)!=32:
如果len(团队)<32长度:
对于范围内的x(0,长度):
teams.append(teams[x])
其他:
number=random.randint(0,len(randoms))
名称=随机数[数字]
团队。追加(名称)
随机删除(名称)
团队排序()
对于范围内的x(0,len(团队)):
打印(团队[x])
我运行程序,进入12个团队,然后完成。它会显示以下消息:

line 29, in <module>
    name = randoms[number]
IndexError: list index out of range
第29行,在
名称=随机数[数字]
索引器:列表索引超出范围
我知道这意味着数字不在数组的长度范围内,但我如何解决这个问题? 谢谢你的反馈。我现在有:

    import random
    teams =[]
    randoms = []
    team = 0
    amount = 1
    while team != "done":
        team = input("Please enter team name " + str(amount) +" or enter 'done' if you have finished.\n")
        if team != "done":
            teams.append(team)
            randoms.append(team)
            amount = amount + 1
    length = len(teams)
    times =0
    while len(teams) != 32:
        while len(teams) <= 32-length:
            for x in range (0,length+1):
                teamname = teams[x]
                teams.append(teamname)
        else:
           choice = random.choice(randoms)
           teams.append(choice)
           randoms.remove(choice)
        teams.sort()
    for x in range(0,len(teams)):
        print (teams[x])
随机导入
团队=[]
随机数=[]
团队=0
金额=1
而团队“完成”:
团队=输入(“请输入团队名称”+str(金额)+”或输入“完成”,如果您已经完成。\n”)
如果团队“完成”:
团队。追加(团队)
随机添加(团队)
金额=金额+1
长度=长度(队)
次数=0
而len(团队)!=32:
而len(teams)
random.randint(a,b)
返回a和b之间的随机整数包括在内。这里,
randoms[len(randoms)]
给出了一个错误。尝试
random.randrange
random.choice

试试这个

name = randoms[number - 1]

将范围的包含边界作为参数。因此,如果下限为0,您可能希望将上限设置为
len(randoms)-1

,您应该知道有一个特殊的函数,用于从列表中选择元素:

random.choice(randoms)

…应该按照您的意愿执行。

randint
切换到
randrange
-
randint(a,b)
包括
b
random.choice(randoms)