x = 25
epsilon = 0.01
step = 0.1
guess = 0.0
while guess <= x:
if abs(guess**2 -x) >= epsilon:
guess += step
if abs(guess**2 - x) >= epsilon:
print('failed')
else:
print('succeeded: ' + str(guess))
Мне дана эта программа Python, которая пытается вычислить квадратный корень из числа x
. По какой-то причине эта программа работает бесконечно, и я не уверен, почему.Почему эта программа Python работает бесконечно?
Есть только конечное число значений guess
, потому что, после того, как guess>x
(то есть, когда guess>=25.1
,, цикл while
затем останавливается). Команда while
в середине программы - это единственное, что происходит в цикле, так что происходит?
Помещенный некоторые операторы печати и узнай – scrappedcola
Так что же происходит, когда 'догадка = 5.0'? Ваш оператор 'if' не будет соответствовать, но' guess <= x' по-прежнему истинно. –
Вы не останавливаете цикл, если догадка находится в пределах epsilon. – BrenBarn