Skip to main content

[Python] Important Algorithms

Factorial function

def factorial(n):   #Task 1: Factorial function 
    if n==0:    #Case 1: 0!
        return 1
    
    else:   #Case 2: <positive_integer>!
        return n*factorial(n-1) #multiply with factorial of n-1

Recursive arithmetic sum 

def arithmetic_sum_2(term1,com_dif,n):   #Task 2(alternative): Arithmetic Sum Function – Recursive method
    if n==1:    #Case 1: last term to add(=the first term of the sequence)
        return term1
    else:   #Case 2: add <positive integer>th term
        return arithmetic_sum_2(term1,com_dif,(n-1))+(n-1)*com_dif+term1

Iterative arithmetic sum

def arithmetic_sum_1(term1,com_dif,n):   #Task 2: Arithmetic Sum function – Formula method
    return (n/2)*(2*term1+(n-1)*com_dif)

Recursive geometric sum

def geometric_sum_2(term1,com_rat,n):   #Task 3: Geometric Sum function – Recursive method
    if n==1:    #Case 1: last term to add(=the first term of the sequence)
        return float(term1)
    else:   #Case 2: add <positive integer>th term
        return float(geometric_sum_2(term1,com_rat,(n-1))+term1*(com_rat**(n-1)))  #perform nth term addition

Iterative geometric sum

def geometric_sum_1(term1,com_rat,n):   #Task 3: Geometric Sum function – Formula method
    return (term1-(com_rat**n))/(1-com_rat)

Fibonacci function

def fibonacci(term1,term2,n):   #Task 4: Fibonacci function
    if n == 0:
        return term1
    elif n == 1:
        return term2
    else:
        return fibonacci(term1,term2,(n-1))+fibonacci(term1,term2,(n-2))

Compound Interest

def compound_interest(initial,inc,n):
    return initial*((1+(inc/100))**n)

PIN, deposit & withdraw

correct_pin=1111
enter_pin=0
attempt=0
balance=100.00
option=0
save=0.00
password=True
while attempt<3 and password:
    while True:
        try:
            enter_pin=str(input("Enter PIN (4 digits)"))
            if len(str(enter_pin))==4 and int(enter_pin)>=0 and int(enter_pin)<=9999:
                break
            else:
                print("invalid format")
        except ValueError:
            print("invalid format")
    if int(enter_pin)==int(correct_pin):
        password=False
    else:
        attempt+=1
        print("wrong")

def deposit():
    global balance
    while True:
        try:
            save=float(input("How much you save"))
            if save>0:
                break
            else:
                print("can't save that amount")
        except ValueError:
            print("invalid format")
    balance+=save

def withdraw():
    global balance
    while True:
        try:
            take=float(input("How much you withdraw"))
            if take>0 and take<=balance:
                break
            else:
                print("can't withdraw that amount")
        except ValueError:
            print("invalid format")
    balance-=take

def change_pin():
    global correct_pin
    while True:
        try:
            new=str(input("Enter new PIN(4digits)"))
            if len(str(new))==4 and int(new)>=0 and int(new)<=9999 and new!=correct_pin:
                break
            elif new==correct_pin:
                print("there is no change")
            else:
                print("invalid password")
        except ValueError:
            print("invalid format")
    correct_pin=new
    print("Change successful")
        
if not(password):
    Out=False
    while not(Out):
        print("MENU")
        print(f"Balance: {balance}")
        print("Deposit[1]")
        print("Withdraw[2]")
        print("Change PIN[3]")
        print("Exit[4]")
        while True:
            try:
                option=int(input("Enter Option(number key)"))
                if option>=1 and option<=4:
                    break
                else:
                    print("no such option")
            except ValueError:
                print("invalid format")
        if option==1:
            deposit()
        elif option==2:
            withdraw()
        elif option==3:
            change_pin()
        else:
            Out=True
    
else:
    print("Max attempt reached")

if Out==True:
    print("End.")