Hoy veremos cómo implementar un algoritmo para saber si un entero es narcisista usando el lenguaje de programación 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.
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
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
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í:
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.
Ver comentarios