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