curriculum/challenges/english/blocks/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md
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.
You should create an else clause.
({
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.
({
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}')")`));
}
})
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--