Skip to content

Instantly share code, notes, and snippets.

@ricardosiri68
Last active May 9, 2016 03:12
Show Gist options
  • Save ricardosiri68/c5f8c5d45564d1345846e11d05e4e6e6 to your computer and use it in GitHub Desktop.
Save ricardosiri68/c5f8c5d45564d1345846e11d05e4e6e6 to your computer and use it in GitHub Desktop.
'''
Teniendo en cuenta que en la sucesión de Fibonacci cada término es la suma de
los dos anteriores siendo los primeros cuatro términos de la sucesión (1,1,2,3)
:
Generar un programa donde se ingrese por teclado un número entero mayor a 3. El
programa deberá imprimir en pantalla cada elemento de la sucesión hasta alcanzar
una cantidad de terminos igual al número ingresado Finalmente deberá mostrará la
cantidad de números pares que existan en la sucesión generada.
'''
def fibonacci(n, known):
'''este metodo aplica la tecnica de memoization una tecnica de programcion
que le permite recordar anteriores valores computados es mucho mas veloz que
la forma convencional soportando secuencias muy extensas en un tiempo minimo
de resolusion. (known) es un diccionario que recolecta cada resultado
obtenido'''
if n in known:
return known[n]
res = fibonacci(n-1, known) + fibonacci(n-2, known)
known[n] = res
return res
def get_fib_sequence(n):
'''obtiene la sequencia de fibonacci inicializando el diccionario que aplica
la almacena'''
sequence = {0: 0, 1: 1}
fibonacci(n, sequence)
values = list(sequence.values())
values.sort()
return values[1:]
def get_input():
'''obtiene la entrada de texto del usuario y valida que sea un entero valido
y mayor que 3'''
try:
num = int(input('ingrese un numero entero mayor que 3:'))
except ValueError:
raise ValueError('Debe ingresar un numero entero')
assert num > 3, Exception('el numero debe ser mayor que 3')
return num
if __name__ == "__main__":
sequence = get_fib_sequence(get_input())
count_pairs = 0 # contador de numeros pares
for value in sequence:
print(str(value), end=', ')
if not value % 2 and value != 0:
count_pairs += 1
print('se encontraron %d numeros pares' % count_pairs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment