我想为我的班级制作科学宾果游戏。此代码目前从列表中随机选择一个元素并显示它,但我不知道如何从列表中删除该值,因此不会随机重新打印。
from random import randint
bingo=["H", "He", "C", "O"]
total=((len(bingo))-1)
while (total>0):
finish=input("Bingo?")
if (finish=="no"):
a=randint(0,int(total))
b=(bingo[int(a)])
print (b)
答案 0 :(得分:3)
无需从列表中删除。只需将其洗牌并迭代一次即可。它会更快,您可以重复使用原始列表。所以random.shuffle(bingo)
然后迭代bingo
。
以下是将其合并到原始代码中的方法:
import random
bingo=["H", "He", "C", "O"]
random.shuffle(bingo)
for item in bingo:
if input("Bingo?") == "no":
print item
else:
break
答案 1 :(得分:0)
阅读后,使用del
:
del bingo[int(a)]
答案 2 :(得分:0)
如果您想要在有几个选项后执行此操作
1)使用随机索引并弹出
import random
i = random.randrange(0, len(bingo))
elem = bingo.pop(i) # removes and returns element
2)使用随机选择删除
import random
elem = random.choice(bingo)
bingo.remove(elem)
如果你想以随机顺序排列所有元素,那么你最好只是改变列表,然后迭代它,或者反复调用pop
import random
random.shuffle(bingo)
for elem in bingo: # list is not shuffled
...
或
import random
random.shuffle(bingo)
while bingo:
elem = bingo.pop()
...
答案 3 :(得分:-1)
foo = ['a', 'b', 'c', 'd', 'e']
from random import randrange
random_index = randrange(0,len(foo))
用于显示:
print foo[random_index]
删除:
foo = foo[:random_index] + foo[random_index+1 :]