Este é o meu código 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'])
Eu vou chegar nisso:
faça o loop while e escolha um id aleatório até que nenhum dos rand1['id'], rand2['id'] e rand3['id'] sejam iguais.
Mesmo que dois deles sejam iguais, faça outro loop for.
Looping não é a maneira certa de fazer isso. Basta embaralhar e distribuir:
Além de embaralhar, você pode usar
random.sample
. Assim como no embaralhamento, o tempo necessário é determinado e você tem a garantia de obter três números exclusivos.A condição que você escreveu informa se todos os três valores são iguais, o que não foi mencionado na sua explicação. Você pode verificar se todos os valores são únicos ou não. Existem várias maneiras de implementá-lo, a maneira é usar sets :
Embora se você não insistir em usar,
secrets
você pode fazê-lo embaralhando a lista e selecionando os 3 primeiros elementos dela.