Implementing Functions and Code Reuse in Python

Calculating Factorials with Iteration

def compute_factorial(num):
    product = 1
    for current in range(1, num + 1):
        product *= current
    return product

while True:
    try:
        user_input = int(input("Enter a positive integer: "))
        if user_input < 0:
            print("Factorials are undefined for negative numbers")
        else:
            print(f"{user_input}! = {compute_factorial(user_input)}")
        break
    except ValueError:
        print("Please enter a valid integer")

Optiimzed Fibonacic Sequence with Recusrion

from functools import lru_cache

@lru_cache(maxsize=None)
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

def main():
    try:
        position = int(input("Enter Fibonacci position: "))
        if position < 0:
            raise ValueError
        print(f"Fibonacci({position}) = {fib(position)}")
    except ValueError:
        print("Positive integers only")

if __name__ == "__main__":
    main()

Drawing Koch Snowflakes with Turtle Graphics

import turtle

def draw_segment(t, depth, length, speed, color):
    t.speed(speed)
    t.pencolor(color)
    if depth == 0:
        t.forward(length)
    else:
        segment = length/3
        draw_segment(t, depth-1, segment, speed, color)
        t.left(60)
        draw_segment(t, depth-1, segment, speed, color)
        t.right(120)
        draw_segment(t, depth-1, segment, speed, color)
        t.left(60)
        draw_segment(t, depth-1, segment, speed, color)

def create_snowflake(depth=3, size=300, speed=5, color="blue", reverse=False):
    window = turtle.Screen()
    pen = turtle.Turtle()
    if reverse:
        pen.right(180)
    for _ in range(3):
        draw_segment(pen, depth, size, speed, color)
        pen.right(120)
    window.mainloop()

# Example usage:
create_snowflake(color="green")  # Standard
create_snowflake(color="purple", reverse=True)  # Reversed

Tags: python functions Recursion turtle-graphics

Posted on Mon, 15 Jun 2026 18:05:12 +0000 by kendall