4
I did a giveaway exercise using dictionary:
from random import randint
from time import sleep
from operator import itemgetter
jogo = {'jogador 1': randint(1,6), 'jogador 2': randint(1,6), 'jogador 3': randint(1,6), 'jogador 4': randint(1,6)}
ranking = {}
print('Valores Sorteados')
for k,v in jogo.items():
print(f' {k} tirou {v} no dado')
sleep(1)
ranking = sorted(jogo.items(), key=itemgetter(1), reverse=True)
for k, v in enumerate(ranking):
print(f'{k+1}º lugar: {v[0]} com {v[1]}')
However, sometimes players have equal values, as is the case in the example below. Players 3 and 2 have the same value (4), but only player 3 is in 2nd place.
1º lugar: jogador 4 com 5
2º lugar: jogador 3 com 4 <-
3º lugar: jogador 2 com 4 <-
4º lugar: jogador 1 com 2
How do I conduct a new draw only between players with equal values to play 2nd and 3rd?
Ex:
1º lugar: jogador 4 com 5
2º lugar: jogador 3 com 4
3º lugar: jogador 2 com 4
4º lugar: jogador 1 com 2
2º lugar: jogador 3 com 4 -> RESORTEIO -> jogador 3 com 2
3º lugar: jogador 2 com 4 -> RESORTEIO -> jogador 2 com 6
1º lugar: jogador 4 com 5
2º lugar: jogador 2 com (4 na 1º tentativa, 6 no resorteio)
3º lugar: jogador 3 com (4 na 1º tentativa, 2 no resorteio)
4º lugar: jogador 1 com 2
this will give work, it would not be easier to generate the players one by one, and when assigning the random value see if it already exists and assign another next?
– Ricardo Pontual