从列表中随机选择项目,无需重复

时间:2018-09-30 20:20:02

标签: python random

我遇到了这个问题:该程序每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)

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

1 个答案:

答案 0 :(得分:3)

您可以将其与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