0

我将如何允许 random.choice 从列表中选择一个项目(一次、两次或三次),然后从列表中删除。

例如,它可能是 1-10,并且在选择 1 之后,在程序重置之前不再允许选择 1

这是一个虚构的例子,用颜色和数字代替了我的话

colors = ["red","blue","orange","green"]
numbers = ["1","2","3","4","5"]
designs = ["stripes","dots","plaid"]

random.choice (colors)
if colors == "red":
    print ("red")
    random.choice (numbers)
    if numbers == "2":##Right here is where I want an item temporarily removed(stripes for example)
        random.choice (design)

我希望这会有所帮助,我正在尝试对我的实际项目保密=\ 抱歉给您带来不便

忘了在代码中提到,在红色被选中后也需要删除

4

1 回答 1

4

您可以使用random.choicelist.remove

from random import choice as rchoice

mylist = range(10)
while mylist:
    choice = rchoice(mylist)
    mylist.remove(choice)
    print choice

或者,@Henry Keiter如前所述,您可以使用random.shuffle

from random import shuffle

mylist = range(10)
shuffle(mylist)
while mylist:
    print mylist.pop()

如果在那之后您仍然需要您的洗牌列表,您可以执行以下操作:

...
shuffle(mylist)
mylist2 = mylist
while mylist2:
    print mylist2.pop()

现在你会得到一个空列表mylist2和你的洗牌列表mylist

编辑 关于您发布的代码。你在写random.choice(colors),但是写什么random.choice呢?它选择随机答案并返回(!)它。所以你必须写

chosen_color = random.choice(colors)
if chosen_color == "red":
    print "The color is red!"
    colors.remove("red") ##Remove string from the list
    chosen_number = random.choice(numbers)
    if chosen_number == "2":
        chosen_design = random.choice(design)
于 2013-09-19T17:23:50.307 回答