Algoritmos Fundamentales en Python: Ejemplos Prácticos y Explicaciones

Clasificado en Informática

Escrito el en español con un tamaño de 4,16 KB

Sucesión de Fibonacci

La sucesión de Fibonacci es una secuencia matemática donde cada número es la suma de los dos anteriores, comenzando con 0 y 1. A continuación, se presentan diferentes implementaciones en Python relacionadas con esta sucesión.

Generar los primeros 'n' términos de la sucesión de Fibonacci

Este fragmento de código genera los primeros 'n' términos de la sucesión de Fibonacci:

n=int(input('Dame n:'))
print('1')
print('1')
a=1
b=1
for i in range (n+1):
    c=a+b
    print(c)
    a=b
    b=c

Determinar si un número pertenece a la sucesión de Fibonacci

El siguiente código determina si un número dado 'n' pertenece a la sucesión de Fibonacci:

n=int(input('Dame un numero:'))
a=1
b=1
c=0
while (c<n):
    c=a+b
    a=b
    b=c
if (c==n):
    print(n,'si esta en la sucesión')
else:
    print(n,'no esta en la sucesión')

Implementación recursiva de la sucesión de Fibonacci

Aquí se muestra una función recursiva para calcular el término 'n' de la sucesión de Fibonacci:

def fibonacci(n):
    if n<=2:
        return 1
    return fibonacci(n-1)+fibonacci(n-2)
n=int(input('Dime un numero'))
print(fibonacci(n))

Mostrar los términos de Fibonacci menores que 'n'

Este código imprime los términos de la sucesión de Fibonacci que son menores que un número 'n' dado:

n=int(input('Dame n (mayor que 1):'))
print('1')
print('1')
a=1
b=1
for i in range (n+1):
    c=a+b
    a=b
    b=c
    if c<n:
        print(c)

Sumatorio de la sucesión de Fibonacci hasta superar un valor 'k'

El siguiente fragmento calcula el sumatorio de la sucesión de Fibonacci hasta que la suma supere un valor 'k' dado. También muestra el último número sumado:

k=int(input('Dame k:'))
s=0
a=1
b=1
s=a+b
while s<=k:
    c=a+b
    s=s+c
    a=b
    b=c
print('Suma=',s,'Ultimo número=',c)

Factorial

La función factorial calcula el producto de todos los enteros positivos desde 1 hasta 'n'.

def factorial(n):
    fact=1
    if n==0:
        fact=1
    else:
        for i in range (1,n+1):
            fact=fact*i
    return fact
n=int(input('Dame el fact.:'))
print(factorial(n))

Exponenciación: b^e

A continuación, se presentan dos implementaciones para calcular la exponenciación de un número 'b' elevado a la potencia 'e': una iterativa y otra recursiva.

Implementación iterativa

def expo (b,e):
    p=1
    for i in range (e):
        p=p*b
    return p
e=int(input('Dime un numero'))
b=int(input('Dime un numero'))
print(expo(b,e))

Implementación recursiva

def expor(b,e):
    if e==0:
        return 1
    return b*expor(b,e-1)
e=int(input('Dime un numero'))
b=int(input('Dime un numero'))
print(expor(b,e))

Máximo Común Divisor (MCD) - Algoritmo de Euclides

El algoritmo de Euclides es un método eficiente para calcular el Máximo Común Divisor (MCD) de dos números.

Implementación iterativa

def MCD(a,b):
    r=a%b
    while(r!=0):
        a=b
        b=r
        r=a%b
    return b

Implementación recursiva

def MCDR(a,b):
    r=a%b
    if r==0:
        return b
    return MCDR(b,r)

Ejemplo de uso:

a=int(input('Dame un numero a: '))
b=int(input('Dame un numero b: '))
if a<b:
    aux=a
    a=b
    b=aux
print(MCD(a,b))
print(MCDR(a,b))

Números Palíndromos en Diferentes Bases

El siguiente código determina la menor base en la que un número 'n' es palíndromo (capicúa) en su representación en esa base.

def abase(n,b):
    if n==0:
        return 'o'
    s=''
    while n>0:
        r=n%b
        n=n//b
        if r<10:
            s=str(r)+s
        else:
            letra=chr(ord('A')+r-10)
            s=letra+s
    return s

def pali(cad):
    izq=0
    der=len(cad)-1
    while(izq<der):
        if(cad[izq]!=cad[der]):
            return False
        izq+=1
        der-=1
    return True

for n in range(1,100):
    for b in range(2,37+1):
        cad=abase(n,b)
        if(pali(cad)):
            print('n=',n,'b=',b,'->',abase(n,b))
            break

Entradas relacionadas: