WSQ-08

En esta ocasión debemos crear un programa que contenga una función que nos especifique de un rango de datos que ingresemos cuales números son palíndromos naturales, cuáles no y los candidatos a números de Lychrel.


def is_palindrome(x):
# return true if x is a palindrome
rev = int(str(x)[::-1])
return x == rev
def apply196(x):
rev = int(str(x)[::-1])
return x + rev
def lychrel(low,high):
num_palindromes = 0
non_lychrels = 0
lychrels = 0
for x in range(low,high+1):
if is_palindrome(x):
num_palindromes = num_palindromes + 1
else:
# non-lycherel or lycherel
# repeat max 30 times, apply196 until palindrome or give up
copia = x
veces = 0
while veces <= 30 and not is_palindrome(copia):
copia = apply196(copia)
veces = veces + 1
if veces > 30:
lychrels = lychrels + 1
print("WOOOHOOO, lychrel es:",x)
else:
non_lychrels = non_lychrels + 1
print("Existen" ,num_palindromes,"números palíndromos naturales en tu serie")
print("Existen" ,non_lychrels,"números palíndromos en tu serie")
print("Existen" ,lychrels,"candidatos a números de Lychrel en tu serie")
#main program below
print("WSQ-08")
print("Ingresa el número menor de tu rango de datos")
x = int(input())
print("Ingresa el número mayor de tu rango de datos")
y = int(input())
lychrel(x,y)
print("Se analizaron todos los enteros de ",x,"a ",y)

view raw

wsq8.py

hosted with ❤ by GitHub

Creamos dos funciones pequeñas que hagan los procesos de reversa del número y de la suma del número y su inverso. Luego empezamos la función principal, en la cuál ponemos un for para que realize la operación con cada número de la lista y con los if y while especificamos a que categoría pertenecera cada número.

Este programa lo realizé con mis conocimientos previos y simplifique su tamaño con el apoyo del profesor de la materia.

Deja un comentario