from functools import lru_cache import math @lru_cache(maxsize = None) def fib(n): if n <=1: return n return fib(n-1)+fib(n-2) def derivative(func, delta = 0.000001): def df(x): return (func(x+delta)-func(x-delta))/(2*delta) return df def harmonic(n): if n<1: print("Error: argument should be larger than 0") accu = 0.0 for i in range(1, n+1): accu += 1/i return accu def grade(number): if number < 0 or number > 100: print("Error: your argument is not in the expected range") if number >= 90: return 'A' if number >=80: return 'B' if number >= 65: return 'C' if number >= 55: return 'D' return 'F'