TODOPIC

Lenguajes de programación para PC => Python => Mensaje iniciado por: Daniel1952 en 09 de Octubre de 2021, 17:29:03

Título: Hacer que los números aleatorio no se repitan...
Publicado por: Daniel1952 en 09 de Octubre de 2021, 17:29:03
Hola gente ¿como están?, el híper danielito no para ni en los finde XL(Argentina) :) :) :)
Al grano, x mas que busco(ejemplos en la web) no logro hacer que los números aleatorios no se repitan, ¿me podrían dar una manito?
y de paso me podrían decir en que puedo mejorar el programa.-
Desde ya gracias y tengan un poco de paciencia/comprensión con este sexagenario  :) :) :), abrazo...

Código: Python
  1. import random
  2.  
  3. numeros = [random.randint(1,50) for i in range(10)]
  4. orden = ("Primer", "Segundo", "Tercer", "Cuarto", "Último")
  5.  
  6. intentos = 1
  7. indice = 0
  8.  
  9. print("\n La lista cuenta con 10 números del 1 al 50")
  10. print(" Tiene un máximo de 5 intentos para acertar")
  11.  
  12. while True:
  13.     try:
  14.         numero = int(input("\n Ingrese un número entero a buscar...: "))
  15.         if numero in numeros:
  16.             print(f"\n el número {numero} existe en la lista.")
  17.             break
  18.         else:
  19.             print(f"\n {orden[indice]} intento fallido, el número {numero} no existe.")
  20.             if intentos == 5:
  21.                 break
  22.             intentos += 1
  23.             indice += 1
  24.     except ValueError:
  25.         input("\n Por favor ingrese un número entero, <Enter> para un nuevo intento...")
Título: Re:Hacer que los números aleatorio no se repitan...
Publicado por: KILLERJC en 09 de Octubre de 2021, 19:14:19
EDITO--- pense que era otra cosa cuando lei la descripcion, pero luego vi el codigo y me di cuenta que no era lo que había escrito

Crea una lista
Crear un numero Random
Pregunta si existe dentro de la lista.
Si existe, volves a generarlo.
Si no existe, lo agregas a la lista.

Título: Re:Hacer que los números aleatorio no se repitan...
Publicado por: Daniel1952 en 09 de Octubre de 2021, 19:28:19
Gracias KILLERFC x ocuparte, creí que era algo que se hacia automáticamente, que ya venia preestablecido en python, tengo tan sólo 10 días estudiando el lenguaje pero lo voy a intentar.-
Saludos y gracias.
Título: Re:Hacer que los números aleatorio no se repitan...
Publicado por: Daniel1952 en 09 de Octubre de 2021, 22:05:37
¿Algo parecido a esto?

Código: Python
  1. import random
  2. miLista = []
  3. cont = 0
  4.  
  5. while True:
  6.     numero = random.randint(1,50)
  7.     if numero not in miLista:
  8.         miLista.append(numero)        
  9.         cont += 1
  10.     if cont == 10:
  11.         break
  12.  
  13. print(miLista)
Título: Re:Hacer que los números aleatorio no se repitan...
Publicado por: Picuino en 10 de Octubre de 2021, 05:28:29
Código: Python
  1. import random
  2. random.sample(range(50), 10)

https://stackoverflow.com/questions/9755538/how-do-i-create-a-list-of-random-numbers-without-duplicates
Título: Re:Hacer que los números aleatorio no se repitan...
Publicado por: Daniel1952 en 10 de Octubre de 2021, 11:04:50
Gracias Picuino, es lo que imaginaba, gracias a ambos x la invalorable ayuda.-
Que tengan todos un bello bello Domingo.-
Título: Re:Hacer que los números aleatorio no se repitan...
Publicado por: Picuino en 10 de Octubre de 2021, 14:16:55
El método sample es distinto al otro. Primero se generan los 50 números posibles y luego se van seleccionando uno a uno sin repetir (se puede hacer borrando de la lista el número seleccionado) hasta que se hayan seleccionado 10.
Es más eficiente para listas en las que hay que seleccionar muchos números. Y más teniendo en cuenta que el algoritmo ya está optimizado en la librería random.