Stack Overflow en español Asked by Rosendo Zarate on December 25, 2021
Estoy intentando crear un valor único en la base de datos con un valor random, empezando por el número del año. Es decir, pueden quedar valores como los siguientes:
16EP784
16TTU3I
1699UYT
La idea es generar un código único para cada cliente. La base de datos no lo permitiría, pero eso sería como un mecanismo de seguridad a la programación realizada.
Se crea un nuevo registro y se crea con un código random. Luego, si el valor generado ya existe en la base de datos, la segunda instrucción crea otro.
Ejemplo con una lista:
lista = [1,2,3]
if 2 in lista:
#crea otro valor <---
La pregunta es cómo lo haría para que se asegure una y otra vez de que el valor generado no existe, ni el tercero, ni el cuarto…
No entiendo cómo se podría hacer eso con un while
, que según entiendo bastaría para hacerlo.
Lo que deseas se puede resumir en los siguientes pasos:
Estoy en lo correcto ?
En python podemos "traducir" las instrucciones como sigue:
def generarNuevoId():
"""
Funcion que genera un nuevo id de forma aleatoria
"""
# instrucciones que generan el id
lista = [1,2,3,4,5,6,7] # lista de 'id's
nuevoid = generarNuevoId()
while nuevoid in lista:
nuevoid = generarNuevoId()
lista.append(nuevoid)
Answered by Ian Mejias on December 25, 2021
Por medio de un While
como lo mencionaste , el if
para validar si existe. el 20 sería el total de números generados requeridos
from random import randint
lista =[]
i=0
while i<20:
val = randint(0,100)
if val not in lista:
print("No Existe")
lista.append(val)
i+=1
print(lista)
Aunque para lo que desea le convendría tener una función y que retorne el valor generado
from random import randint
def returnIdUnique(lista):
while True:
val = randint(0,100)
if val not in lista:
lista.append(val)
return val
lista= [1,4,2]
print(returnIdUnique(lista))
Answered by Dev. Joel on December 25, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP