我遇到了这个问题:该程序每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)
你们中的任何人都可以弄清楚该怎么做,或者有一个我可以使用的例子吗?
答案 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
。