我遇到了这个问题:该程序每5秒左右随机显示53张卡片,而无需重复显示。

我的代码现在看起来非常基础,因为我仍在努力弄清楚如何使其工作。我设法从列表中随机打印项目,而无需重复,但是当选项用完时,我会报错。这是我的代码的一部分:

let = ['CARD 1','CARD2','CARD 3']#Theres only 3 cards until i figure how to do it
if var=='iniciar' or 'INICIAR':
  while True:
    random.choice(let)
    while len(let):
    print let.pop()
    import time
    time.sleep(.5)


你们中的任何人都可以弄清楚该怎么做,或者可以举一个我可以使用的例子吗?

最佳答案

您可以使用random.shuffle使其工作:

import random
import time

let = ['CARD 1','CARD2','CARD 3']

new_let = list(let)
random.shuffle(new_let)
for card in new_let:
    print(card)
    time.sleep(.5)


或者我们可以采样:

import random
import time

let = ['CARD 1','CARD2','CARD 3']

new_let = random.sample(let, k=53)
for card in new_let:
    print(card)
    time.sleep(.5)


这里的k=53是我们采样的元素数,因此我们可以更改参数。

最好使用for循环并遍历列表,而不是弹出并销毁(通常最好不要更改数据结构,除非需要)。

请注意:

if var=='iniciar' or 'INICIAR':


应该:

if var == 'iniciar' or var == 'INICIAR':


因为否则条件始终为true:or检查两个操作数的真实性,并且非空字符串的真实性为True

关于python - 从列表中随机选择项目,无需重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52581788/

10-12 15:05