Вопрос Почему программа python выполняется бесконечно?

Регистрация
2 Авг 2013
Сообщения
77
Репутация
0
Спасибо
0
Монет
0
a = int(input())

b = int(input())

while round(a-b, 3)!=0.001 or round(a-b, 3)!=-0.001:

x = round((a+b)/2, 3)

ur = round(3*x**4+4*x**3-12*x**2+1, 3)

if ur > 0:

b = x

else:

a = x

print(a, b, x, ur, sep=' | ')
 
Судя по вот этому round(a-b, 3) , ты хочешь считать до тех пор, пока "расстояние" между числами а и b не станет очень маленьким. Строгое равенство трудно получить, лучше использовать "больше"/"меньше" - это раз. А два - x = round((a+b)/2, 3) тут ты не сокращаешь расстояние между числами, а увеличиваешь, потому что новая полусумма в любом случае будет присвоена или а или b. Может тебе надо было x = round((a-b)/2, 3)?
 
Условие никогда не бывает ложно. Чтобы оно было ложно, одно число (а-б) должно быть равно сразу двум другим - и 0.001 и -0.001. А такое случиться никак не может
 
потому что сделали так
 
Назад
Сверху