在Python3中循环一组if/else语句,直到列表变量具有三个唯一值

在Python3中循环一组if/else语句,直到列表变量具有三个唯一值,python,loops,random,Python,Loops,Random,尝试重复python代码的这一部分,直到得到三个不同的结果。这不是实际的代码,只是做同样事情的简化版本 roll = random.randint(1,100) if roll < 10: name += "alpha" elif roll < 37: name += "bravo" elif roll < 50: name += "charlie" elif roll < 89: name += "delta" else: nam

尝试重复python代码的这一部分,直到得到三个不同的结果。这不是实际的代码,只是做同样事情的简化版本

roll = random.randint(1,100)
if roll < 10:
    name += "alpha"
elif roll < 37:
    name += "bravo"
elif roll < 50:
    name += "charlie"
elif roll < 89:
    name += "delta"
else:
    name += "echo"
print(name)
roll=random.randint(1100)
如果滚动小于10:
名称+=“alpha”
elif辊<37:
名称+=“好极了”
elif辊<50:
姓名+=“查理”
elif辊<89:
名称+=“增量”
其他:
名称+=“echo”
印刷品(名称)
基本上,我希望这段代码不断重复,直到[name]有三个不同的值,然后我希望输出列出所有三个值,每一个都在一行上。我不知道最好的方法是什么。谢谢你的帮助


编辑:在我的实际代码中,每个数字的范围并不是均匀分布的。我对上述内容进行了编辑以反映这一点。由于获得五种可能结果的几率各不相同,random.sample将不起作用(除非它可以针对每个结果的不同赔率进行格式化)

对于本例,我会这样做:

import random
name = ["alpha", "bravo", "charlie", "delta", "echo"]
name = "\n".join(random.sample(name, 3))

对于这个例子,我会这样做:

import random
name = ["alpha", "bravo", "charlie", "delta", "echo"]
name = "\n".join(random.sample(name, 3))

制作一个列表,然后循环,直到你有三个独特的项目

values = []
while len(values) != 3:
   index = random.randrange(100)
   value = determine_value_for_index(index)
   if value not in values:
        values.append(value)

制作一个列表,然后循环,直到你有三个独特的项目

values = []
while len(values) != 3:
   index = random.randrange(100)
   value = determine_value_for_index(index)
   if value not in values:
        values.append(value)

如果您需要唯一的值,那么您可能需要的是
set
类型

name = set()
while len(name)<3:
    roll = random.randint(1,100)
    if roll < 10: name.add("alpha")
    elif roll < 37: name.add("bravo")
    elif roll < 50: name.add("charlie")
    elif roll < 89: name.add("delta")
    else: name.add("echo")
for n in name: print n
name=set()

而len(name)如果您需要唯一的值,那么您可能需要的是
set
类型

name = set()
while len(name)<3:
    roll = random.randint(1,100)
    if roll < 10: name.add("alpha")
    elif roll < 37: name.add("bravo")
    elif roll < 50: name.add("charlie")
    elif roll < 89: name.add("delta")
    else: name.add("echo")
for n in name: print n
name=set()

而len(name)random.sample有什么问题

names = ["alpha", "bravo", "charlie", "delta", "echo"]

random.sample(names, 3) # ['delta', 'echo', 'bravo']
random.sample(names, 3) # ['echo', 'charlie', 'delta']
random.sample(names, 3) # ['bravo', 'charlie', 'delta']
编辑:

name = ''.join(random.sample(names, 3)) # 'deltabravocharlie'

随机抽样有什么问题

names = ["alpha", "bravo", "charlie", "delta", "echo"]

random.sample(names, 3) # ['delta', 'echo', 'bravo']
random.sample(names, 3) # ['echo', 'charlie', 'delta']
random.sample(names, 3) # ['bravo', 'charlie', 'delta']
编辑:

name = ''.join(random.sample(names, 3)) # 'deltabravocharlie'

name
不是一个列表。你需要使用一个列表。链接后面的
name
不是一个列表。你需要使用一个列表。然后点击链接