«Инкапсулируйте этот цикл в функцию square_root, которая принимает как параметр, выбирает разумное значение x и возвращает оценку квадратного корня из.».Упражнение 7.2: Think Python
def square_root(a):
x = 2
y = (x + a/x)/2
epsilon = 0.00000000001
if abs(y - x) < epsilon:
print y
while abs(y - x) > epsilon:
x = x + 1
y = (x + a/x)/2
break
else:
return
print y
square_root(33)
до ввода 33 для «a», он оценивает правильный квадратный корень. после этого он начинает прыгать экспоненциально, до такой степени, что когда я отправляю 100 в «a», он полагает, что квадратный корень равен приблизительно 18. Я не знаю, может быть, это характер оценки. Я знаю, как найти точный квадратный корень, но это упражнение из книги «Think Python», и это нужно практиковать с рекурсией и мышлением алгоритмически.
Почему у вас есть 'break' непосредственно в теле вашего' while' цикла? – Blender
это ничего мне не даст, просто пусто. Он будет работать, но не будет печатать 'y' – troychroi