¿Cómo puedo hacer un ciclo de validación para asegurarme de que el usuario introduzca la cantidad correcta de veces en una entrada .split?
Puede parecer un poco ridículo, pero he creado un método muy largo para validar un número de tarjeta de crédito. Soy bastante nuevo en Python y en programación en general, y quería hacer que fuera capaz de validar la cantidad de dígitos, comprobar si la entrada solo contiene números, y también imprimir la entrada dividida de esta manera: xxx-xxxx-xxxx.
Hasta ahora tengo esto (por favor, disculpen lo desordenado y probablemente innecesario que es):
CreditOne = 0
CreditTwo = 0
CreditThree = 0
while True:
CreditOne, CreditTwo, CreditThree = input("Ingrese el número de tarjeta de crédito (separados por espacios): ").split()
CreditCardList = [CreditOne, CreditTwo, CreditThree]
CreditCardNumber = "-".join(CreditCardList)
if CreditOne.isdigit() and CreditTwo.isdigit() and CreditThree.isdigit() and len(CreditOne) == 4 and len(CreditTwo) == 4 and len(CreditThree) == 4:
break
elif CreditOne == 0 or CreditTwo == 0 or CreditThree == 0:
print("Por favor ingrese un número de tarjeta de crédito válido.")
continue
else:
print("Por favor ingrese un número de tarjeta de crédito válido.")
continue
print(CreditCardNumber)
Funciona en su mayoría, excepto por el hecho de que si el usuario ingresa algo como 4 4 o una sola letra, obtendrá un ValueError:
ValueError: no hay suficientes valores para desempaquetar (se esperaban 3, se obtuvo 1).
Básicamente lo que he estado tratando de hacer es crear una validación que permita que el bucle continúe después del error y vuelva al inicio del bucle. He intentado usar un bucle try-except y no funcionó, así que quería obtener una segunda opinión sobre esto y quizás la ayuda de alguien que entienda lo que estoy intentando lograr con mi código.
davy.ai
Parece que estás tratando de crear un bucle de validación para verificar si la entrada del usuario es válida para un número de tarjeta de crédito. Podrías usar un bloque
try
/except
para capturar elValueError
y pedirle al usuario que ingrese un número de tarjeta de crédito válido. También podrías usar un buclewhile
para seguir pidiendo al usuario hasta que ingrese un número de tarjeta de crédito válido.Aquí te mostramos un ejemplo de cómo hacer esto: