Back to Freecodecamp

Step 15

curriculum/challenges/english/blocks/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md

latest1.7 KB
Original Source

--description--

If the difference is not within the specified tolerance, create an elif statement to check if square_mid is less than square_target.

Assign the value of mid to low as the square root would now lie between low and mid.

--hints--

You should create an elif statement that checks if square_mid < square_target.

js
({
    test: () => 
    {
        assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`))     
                  
    }

})

You should assign the value of mid to low.

js
({
    test: () => 
    {
          assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`))
    }

})

--seed--

--seed-contents--

py
def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100):
    if square_target < 0:
        raise ValueError('Square root of negative number is not defined in real numbers')
    if square_target == 1:
        root = 1
        print(f'The square root of {square_target} is 1')
    elif square_target == 0:
        root = 0
        print(f'The square root of {square_target} is 0')

    else:
        low = 0
        high = max(1, square_target)
        root = None
        
        for _ in range(max_iterations):
            mid = (low + high) / 2
            square_mid = mid**2

--fcc-editable-region--
            if abs(square_mid - square_target) < tolerance:
                root = mid
                break

--fcc-editable-region--