从列表中随机选择项目并且不重复

2024-04-25 15:13:32 发布

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

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

你们中有谁能想出办法来,或者我能举个例子吗?你知道吗


Tags: 项目代码程序only列表time选项错误
1条回答
网友
1楼 · 发布于 2024-04-25 15:13:32

您可以让它与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':

否则条件总是真的:or检查两个操作数的真实性,非空字符串的真实性是True。你知道吗

相关问题 更多 >