Python - Validación de números de tarjeta de crédito

 
Vista:

Validación de números de tarjeta de crédito

Publicado por rafael amaris (2 intervenciones) el 20/05/2020 17:21:17
Una tarjeta de crédito válida del banco ABCD tiene las siguientes características:

Es una secuencia de 16 números enteros (del 0 al 9).
Dicha secuencia se divide en 4 grupos y cada grupo tiene 4 números, los grupos se dividen por alguno de los siguientes caracteres: "-", "_", " ".
En los grupos se pueden repetir los números, pero no puede existir 2 números repetidos consecutivos.
Adicionalmente el código de verificación contiene 4 elementos alfanuméricos en Mayúscula donde mínimo debe contener 1 letra y 1 número. El código de verificación no puede contener ningún elemento repetido.
Ejemplo de Números de tarjeta de crédito válidos:

1246-4398-0871-5645
4634 4597 8070 0201
0871_5645_4398_1246
Ejemplo de Números de tarjeta de crédito inválidos:

1246-4398-0871-56457 # Tiene 17 dígitos
4634459780700201 # Los grupos de números no estan divididos
0071_6645_4398_1246 # Existe más de 1 número repetivo consecutivo
Ejemplo de Códigos de Verificación de tarjeta de crédito válidos:

1HB2
I9LM
LMB4
Ejemplo de Códigos de Verificación de tarjeta de crédito inválidos:

HBDA # No contiene números
0201 # No contiene letras
bfg1 # Sus elementos estan en minúscula
GF89H # Tiene 5 elementos

esto es lo que he tratado hacer, perdon si esta confuso es que soy muy nuevo en python
1
2
3
4
5
6
7
8
9
10
11
12
13
class Generar_tarjeta():
	def __init__(self,BIN, cantidad=1, solo_impresion=False):
		self.BIN = BIN.replace(" ","")#Procesar espacios
		self.db_bins = "db_bins.txt"
 
		if(len(self.BIN) > 16 or len(self.BIN) < 15):#Tiene que tener la longitud indicada
			print("Por favor revisa la longitud del BIN.")
		elif(BIN[0].lower() == "x"):#Si no hay un bin especifico se elige uno de la db al azar
			print("No hay un BIN asignado, eligiendo uno al azar de la base de datos")
			bin_reg = list(self.BIN)
			bin_nuevo = self.bin_al_azar()
			for i in range(0,5):bin_reg[i] = bin_nuevo[i]
			self.BIN = "".join([i for i in bin_reg])
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder