---
id: 65ef1d924ff2e5c7031c6ce8
title: Step 18
challengeType: 20
dashedName: step-18
---

# --description--

Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root has been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string.

# --hints--

You should create an `else` clause.

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

```

You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body.

```js
({
    test: () => 
    {
        assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`));
    }
})

```

# --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

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

            elif square_mid < square_target:
                low = mid
            else:
                high = mid

--fcc-editable-region--
        if root is None:
            print(f"Failed to converge within {max_iterations} iterations.")
        
--fcc-editable-region--

```
