Learn the Bisection Method by Finding the Square Root of a Number - Step 18

Tell us what’s happening:

I am confused why my code is incorrect. I have tried root is not None & root != None. Additionally, the error message I get states that the print function is not in the body of the else function which is not true.

Your code so far

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


# User Editable Region

        if root is None:
            print(f"Failed to converge within {max_iterations} iterations.")
        else:
            root is not None
            print(f'The square root of {square_target} is approximately {root}')

# User Editable Region


Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36

Challenge Information:

Learn the Bisection Method by Finding the Square Root of a Number - Step 18

Why do you have this part inside the else?

1 Like

Thank you… I don’t know how to describe that mental error

1 Like

I might be a little slow here but where would it go if not in the else clause? ive tried it with and without that line in and out of the else clause and I am just drawing a complete blank.

In the future, please create your own topic when you have specific questions about your own challenge code. Only respond to another thread when you want to provide help to the original poster of the other thread or have follow up questions concerning other replies given to the original poster.

The easiest way to create a topic for help with your own solution is to click the Ask for Help button located on each challenge. This will automatically import your code in a readable format and pull in the challenge url while still allowing you to ask any question about the challenge or your code.

Thank you.

You have to follow the logic one line at a time.

if you put the check in the else clause.
it never gets checked if the if statement condition is met.

for anything you want checked regardless of the outcome of if, elif or else you need to put it outside so it runs after the statements no matter what