Validación Luhn con dígitos ASCII
Valida una cadena sintética de 2 a 64 dígitos ASCII mediante la suma de Luhn.
def luhn_valid(text):
if type(text) is not str or not 2 <= len(text) <= 64:
raise ValueError("luhn.length")
if any(char < "0" or char > "9" for char in text):
raise ValueError("luhn.alphabet")
total = 0
for index, char in enumerate(reversed(text)):
digit = ord(char) - ord("0")
if index % 2:
digit *= 2
if digit > 9:
digit -= 9
total += digit
return total % 10 == 0Modelos
Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado.
Proyecto
Conserva los ceros iniciales y prueba ambas paridades de longitud, rechazando espacios y dígitos no ASCII sin afirmar la validez de una cuenta.
Revisa antes de aplicar
Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
def luhn_valid(text):
if type(text) is not str or not 2 <= len(text) <= 64:
raise ValueError("luhn.length")
if any(char < "0" or char > "9" for char in text):
raise ValueError("luhn.alphabet")
total = 0
for index, char in enumerate(reversed(text)):
digit = ord(char) - ord("0")
if index % 2:
digit *= 2
if digit > 9:
digit -= 9
total += digit
return total % 10 == 0Revisa la validación sin perder el texto original
El código de validación tiene dos responsabilidades que es fácil confundir: definir las entradas aceptables y decidir qué significan. DigitTally es un entorno de programación con IA para Windows donde puedes analizar esas responsabilidades frente a los archivos fuente del proyecto. Aporta un ejemplo sintético, su resultado esperado y el código que gestiona las entradas rechazadas; después pide al modelo que inspeccione los límites actuales.
El ejemplo de comprobación Luhn ofrece una tarea concreta con cadenas de dígitos. Describe cómo deben conservarse los ceros iniciales y qué conjunto de caracteres admite la aplicación antes de solicitar una modificación. Pregunta cómo distingue el cambio propuesto un valor mal formado de uno que no supera la suma de control. Separar esos resultados ayuda a revisar tanto el código del formulario o de importación como el cálculo.
Comprueba la propuesta con casos sintéticos de diferentes longitudes, incluidos caracteres no permitidos, y ejecuta las pruebas pertinentes del proyecto. El resultado de una suma de control aporta evidencia sobre ese cálculo, no sobre la existencia de una cuenta. DigitTally se conecta a servicios compatibles con OpenAI o Anthropic admitidos; configura credenciales cuando sean necesarias. Puedes elegir un modelo sin restricciones si el servicio lo ofrece, con reglas del proveedor, herramientas y capacidad de contexto determinadas por esa conexión. Evalúa el código según el contrato de entrada que hayas establecido.
Preguntas sobre la validación de identificadores
¿Por qué usar identificadores sintéticos en la conversación?
Pueden reproducir el comportamiento del formato y la suma de control sin compartir datos reales de cuentas. Elige casos que conserven la longitud pertinente y los ceros iniciales, e indica el resultado esperado para que el asistente pueda examinar el código frente a casos conocidos.
¿Deben convertirse primero las cadenas de dígitos en números?
Revisa si la conversión descartaría información que necesita la aplicación, como los ceros iniciales. El contrato ilustrado trata la entrada como texto. Pide al asistente que conserve ese contrato durante la validación y en la gestión de errores del código que llama a la función.
¿Qué demuestra superar una suma de control?
Solo demuestra que el valor satisface la regla de suma de control implementada. No verifica la existencia de una cuenta, su titularidad ni el permiso para realizar transacciones. Mantén esos requisitos independientes de la aplicación fuera de las afirmaciones sobre esta rutina de validación ilustrativa.
¿Qué casos de paridad necesitan pruebas?
Incluye longitudes admitidas tanto pares como impares, además de caracteres rechazados y longitudes límite. Ejecuta esos casos después de revisar la modificación propuesta para que un cambio en el orden de iteración no desplace silenciosamente las posiciones que se duplican.
DigitTally · Actualizado 2026-10-25