这是我的Python代码:
import secrets
from time import sleep
ids = [{'id': number} for number in range(1, 5+1)]
rand1 = secrets.choice(ids)
rand2 = secrets.choice(ids)
rand3 = secrets.choice(ids)
n = 0
while rand1['id'] == rand2['id'] == rand3['id']:
n += 1
print('Before')
print(rand1['id'], rand2['id'], rand3['id'])
sleep(1)
rand1 = secrets.choice(ids)
rand2 = secrets.choice(ids)
rand3 = secrets.choice(ids)
print('After')
print(rand1['id'], rand2['id'], rand3['id'])
我要达到这个目标:
执行 while 循环并选择一个随机 id,直到 rand1['id']、rand2['id'] 和 rand3['id'] 都不相等。
即使其中两个相等,然后再进行一次 for 循环。
循环不是执行此操作的正确方法。只需洗牌并发牌:
除了洗牌之外,您还可以使用
random.sample
. 与洗牌一样,所花费的时间是确定的,并且保证您获得三个唯一的数字。您编写的条件表明所有三个值是否相等,这不是您在解释中提到的。您可以检查所有值是否唯一。有多种方法可以实现它,其中一种方法是使用 set :
不过,如果您不坚持使用,
secrets
可以通过打乱列表并从中选择前 3 个元素来实现。