我遇到了这个问题:程序每 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)
<b>random.shuffle(new_let)</b>
for card in new_let:
print(card)
time.sleep(.5)
或者我们可以采样:
import random
import time
let = ['CARD 1','CARD2','CARD 3']
<b>new_let = random.sample(let, k=53)</b>
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
。
关于python - 从列表中随机选择项目而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52581788/