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 te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.
Ver comentarios