Untitled

 avatar
unknown
plain_text
9 days ago
1.4 kB
3
Indexable
def calculate_ean13_check_digit(code: str) -> int:
    """Calcula el dígito de control EAN-13 para un código de 12 dígitos (como string)."""
    digits = [int(d) for d in code]
    checksum = (sum(digits[::2]) + sum(d * 3 for d in digits[1::2])) % 10
    return (10 - checksum) % 10

def generate_ean13_codes(base_code: str, count: int = 100) -> list:
    """
    Genera una lista de códigos EAN-13 válidos a partir de un base_code de 12 dígitos.
    :param base_code: Código base como string de 12 dígitos.
    :param count: Número de códigos a generar.
    :return: Lista de códigos EAN-13 como strings.
    """
    if len(base_code) != 12 or not base_code.isdigit():
        raise ValueError("El código base debe tener exactamente 12 dígitos numéricos.")
    
    base_number = int(base_code)
    codes = []

    for i in range(count):
        current_number = str(base_number + i).zfill(12)  # Mantener 12 dígitos con ceros a la izquierda
        check_digit = calculate_ean13_check_digit(current_number)
        codes.append(f"{current_number}{check_digit}")
    
    return codes

# Solicitar al usuario el código base
base_code = input("Introduce un código base de 12 dígitos: ").strip()

try:
    ean13_codes = generate_ean13_codes(base_code)
    
    # Mostrar los 100 códigos generados
    for code in ean13_codes:
        print(code)
except ValueError as e:
    print(f"Error: {e}")
Editor is loading...
Leave a Comment