Introducción

Hoy veremos cómo implementar un algoritmo para saber si un entero es narcisista usando el lenguaje de programación Python.

Número narcisista en Python

Si no sabes cómo funciona este algoritmo o qué cosa es un número narcisista, te recomiendo leer esto.

Por cierto, recuerda que debes tener instalado el intérprete de Python. Si no sabes cómo, mira cómo instalar Python 3 y ponerlo en la PATH.

Función para comprobar si un número es narcisista

Definimos la siguiente función aquí y más abajo la explico:

def es_narcisista(numero):
    numero_como_cadena = str(numero)
    longitud_de_numero = len(numero_como_cadena)
    suma = 0
    for letra in numero_como_cadena:
        # Convertir carácter a entero
        cifra_actual = int(letra)

        # Elevar ese carácter a la potencia dada por la longitud del número
        elevado = pow(cifra_actual, longitud_de_numero)

        # El resultado lo añadimos a suma
        suma = suma + elevado
    # Comprobar si la suma al elevar es igual al número que recibimos
    if numero == suma:
        return True
    else:
        return False

Aunque Python es de tipado fuerte, nos permite convertir variables de manera fácil. Para ello usamos int y str. Más tarde para elevar un número usamos pow.

Así de fácil es hacer esa función. Veamos cómo podemos implementarla

Implementación de la función

La función mencionada anteriormente recibe un entero y regresará True o False. Aquí un ejemplo de cómo podemos invocarla:

"""
    Determinar si un número es narcisista usando Python
    https://parzibyte.me/blog/
"""
def es_narcisista(numero):
    numero_como_cadena = str(numero)
    longitud_de_numero = len(numero_como_cadena)
    suma = 0
    for letra in numero_como_cadena:
        # Convertir carácter a entero
        cifra_actual = int(letra)

        # Elevar ese carácter a la potencia dada por la longitud del número
        elevado = pow(cifra_actual, longitud_de_numero)

        # El resultado lo añadimos a suma
        suma = suma + elevado
    # Comprobar si la suma al elevar es igual al número que recibimos
    if numero == suma:
        return True
    else:
        return False

# Hora de probar
numeros = [1, 2, 3, 4, 153, 28, 11, 96, 407, 1634, 54748]
for numero in numeros:
    print("¿{} es narcisista? {}".format(numero, es_narcisista(numero)))

Lo que hacemos es probar un arreglo de enteros y llamar a la función por cada uno de ellos.

En mi caso la salida se ve así:

Narcisista en Python
Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto