Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

numeros repetidos

caso eu não queira que tenha numeros repetidos, como fazer?

8 respostas

Tente criar uma condicional para os números que já foram gerados ser ignorados.

tentei fazer criando uma lista e a condicional era: se o numero não estivesse na lista o jogo prosseguia, caso contrário pediria para sortear outro número e no final o numero sorteado deveria ser adicinoado na lista codigo import random numero_secreto = random.randrange(1,11) lista = [ ] if numero_secreto not in lista: print (numero_secreto) else: print ('faça outro sorteio')

lista.append (numero_secreto)

porém quando essa linha de comando (lista.append (numero_secreto)) está no final o numeero não é cooocado na lista ou se é colocado na segunda rodada a lista retorna vazia navamente.

voce tem alguma sugestão? preciso resolver isso para uma outra aplicação

Pelo que entendi, você está criando uma chamada recursiva (loop) na lista vazia, ou seja:

import random

numero_secreto = random.randrange(1,11)
lista = [ ] #Toda veez que você chamar esse bloco chamará a lista vazia novamente

if not numero_secreto in lista:
    print (numero_secreto)
else:
    print ('faça outro sorteio')

lista.append (numero_secreto)

Uma maneira da lista não vir vazia seria:

lista = [ ] #colocar a lista acima de um loop (for)

for _ in range(11):
  numero_secreto = randrange(1,11)  
  if not numero_secreto in lista:
    print (numero_secreto)
  else:
    print ('faça outro sorteio')

  lista.append (numero_secreto)

print(lista)

Mas nesse cenário continuará vindo números repetidos pois o lista.append(numero_secreto) estará no final da condicional

Com isso você pode fazer da seguinte forma:

lista = [ ]

for _ in range(11):
  numero_secreto = randrange(1,11)  
  if not numero_secreto in lista:
    print (numero_secreto)
    lista.append (numero_secreto) #movendo o lista.append(numero_secreto) para dentro da condicional
  else:
    print ('faça outro sorteio')

print(lista)

o segundo rodou como pretendo, porém sorteia vários numeros simultaneamente, o que desejo: na primeira rodada faça o sorteio de um numero apenas, coloque esse numero na lista, faço outro sorteio, ele analisa se o numero ja foi sorteado e continua e assim por diante, ou seja, sortear apenas um numero por vez. mas olha sua dica ja foi muito boa. para que desejo isso? é um jogo de tabela periódica e em sorteia um elemento quimico por vez (numero_secreto)

lista = [ ]

for _ in range(11): numero_secreto = randrange(1,11) if not numero_secreto in lista: print (numero_secreto) lista.append (numero_secreto) #movendo o lista.append(numero_secreto) para dentro da condicional else: print ('faça outro sorteio') break # coloquei um break para terminar de rodar quando o else for satisfeito, se não fizer sorteios multiplos print(lista)**

Então acrecito que você possa seguir essa linha de raciocínio, criando uma função chamando quando for conveniente.

from random import randrange

def sortear_numero(lista, ranger): #Função definida, recebendo como parâmetro a lista e um ranger para gerar o número aleatóriamente (tipo de 0 até 12 números)
  numero_secreto = randrange(1,ranger) #Gera um número aleatório
  if not numero_secreto in lista: #Condicional que verifica a existência do número na lista
    print('Número novo encontrado e registrado')
    return numero_secreto #Caso não tenha o número na lista ele retorna o número gerado.
  print('Como esse numero já existe vou executar novamente')
  return sortear_numero(lista, ranger) #Caso contrário fazemos uma recursividade para a mesma função

lista = [1,2,3,4,5,6,7,8,9,10] #Aqui criei a lista com alguns número já existentes, tornando possível somente dentro do range as opções 11 e 12
lista.append(sortear_numero(lista, 12)) #Nessa linha chamamos a função que retorna o número em seguida já adiciona a lista.
print(lista)

Perceba que nesse exemplo o sistema executou várias vezes para retornar com um número não existente na lista.

PS E:\Usuario\Desktop\numeroAleatorioNaoRepetido> & C:/Users/AsusRoG/AppData/Local/Programs/Python/Python39/python.exe e:/Usuario/Desktop/numeroAleatorioNaoRepetido/NumAleatorioNaoRepetido.py   
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Como esse numero já existe vou executar novamente
Número novo encontrado e registrado
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
PS E:\Usuario\Desktop\numeroAleatorioNaoRepetido>

bom dia!! FelipiSantana, nossa! muito obrigado por toda sua atenção!! tem sido de grande ajuda e vou rodar o código.

solução!

Boa!

Depois dee testado direitinho marca a resposta como solução que me ajudará também!