Проблема заключается в том, что вам необходимо повторно запросить ввод данных пользователем в то время как l oop, как уже упоминали другие.
Более полная версия этого ответа также будет заключаться в рефакторинге заказа операций внутри пока l oop. В коде вы выполняете математические операции на x
, прежде чем подтвердить, что он больше нуля. Если известно, что математика не работает без положительного целого числа, в вашем коде будет ошибка, которая может привести к необработанному исключению. Вот еще одна версия с переключателем оператора if, поэтому мы проверяем ввод, прежде чем делать что-либо еще, что снижает вероятность того, что программа выдаст исключение на основе ввода.
import math
#Initialize the tolerance and estimate
tolerance = 0.000001
estimate = 1.0
#Perform the successive approximations
while True:
# Receive the input number from the user
x = float(input("Please enter a positive number:"))
if x <= tolerance:
print("Invalid input.")
continue
else:
estimate = (estimate + x / estimate) / 2
diference = abs(x - estimate ** 2)
break
#Output the result
print("The program's estimate:", estimate)
print("Python's estimate: ", math.sqrt(x))