如何显示然后从列表中删除随机字符串?

2024-03-28 09:01:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为我的班做一个科学宾果游戏。这段代码目前从列表中随机选取一个元素并显示它,但我不知道如何从列表中删除该值,这样就不会随机重印。你知道吗

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)

Tags: 代码fromimport元素列表random科学int
3条回答

阅读后,使用del

del bingo[int(a)]

如果你想这样做,一旦你有几个选择

1)使用随机索引和pop

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()
    ...

无需从列表中删除。只需将其洗牌并在其上迭代一次。它会更快,你可以重用你原来的名单。所以做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

相关问题 更多 >