i am in need of help with this homework. The instructions are as followed: Package Newton's method for approximating square roots in a function named newton. This function expects the input number as an argument and returns the estimate of its square root. The script should also include a main function that allows the user to compute the square roots of inputs until the user presses the enter/return key. This is what I have so far:

```
import math
#Initialize tolerance
tolerance = 0.000001
def newton(x):
""" Returns the square root of x """
#Performs the successive approximations
estimate = 1.0
while True:
estimate = (estimate + x / estimate) / 2
difference = abs(x - estimate ** 2)
if difference <= tolerance: # Break out of loop if difference is less than tolerance
break
return estimate # While the difference value is > TOLERANCE, the process continues
def main():
"""Allows the user to obtain square roots."""
while True:
#Receive the input number from the user
x = input("Enter a positive number or enter/return to quit: ")
if x == "": #if user presses "Enter" then exit the program
break # Otherwise, continue the process of allowing new numbers
x = float(x)
#Output the result
print("The programs estimate of the square root of ", x, "is ", round(newton(x),2))
print("Python's estimate: ", math.sqrt(x))
main()
```

I tested it out, but it seems like the calculation is not accurate, can anyone help me?

return should be in place of break, I think. Also rounding to 2 decimals does not make sense after so small tolerance for error, generally you also do not round, you just format the printing.

I would write the code like this ...

```
def newton_approx(x):
"""
Newton's method to get the square root of x
using successive approximations
"""
tolerance = 0.000001
estimate = 1.0
while True:
estimate = (estimate + x / estimate) / 2
difference = abs(x - estimate ** 2)
if difference <= tolerance:
break
return estimate
# test
x = 2
print("newton = %0.15f" % newton_approx(x))
print("x**0.5 = %0.15f" % (x**0.5))
'''
newton = 1.414213562374690
x**0.5 = 1.414213562373095
'''
```

Thank you everyone for your helpful inputs in solving my problem. The code now works since I moved the return outside of the loop. Now for phase 2 of my homework converting the current function to a recursive function. Any suggestions?