N
N
nihi1ist2021-11-19 09:47:22
Python
nihi1ist, 2021-11-19 09:47:22

Why is the condition not firing in Python code?

I'm trying to solve a problem.
В рамках программы колонизации Марса компания «Спейс Инжиниринг» вывела особую породу черепах, которые, по задумке, должны размножаться, откладывая яйца в марсианском грунте. Откладывать яйца слишком близко к поверхности опасно из-за радиации, а слишком глубоко — из-за давления грунта и недостатка кислорода. Вообще, факторов очень много, но специалисты проделали большую работу и предположили, что уровень опасности для черепашьих яиц рассчитывается по формуле D = x^3 − 3x^2 − 12x + 10, где x — глубина кладки в метрах, а D — уровень опасности в условных единицах. Для тестирования гипотезы нужно взять пробу грунта на безопасной, согласно формуле, глубине.

Напишите программу, находящую такое значение глубины х, при котором уровень опасности как можно более близок к нулю. На вход программе подаётся максимально допустимое отклонение уровня опасности от нуля, а программа должна рассчитать приблизительное значение х, удовлетворяющее этому отклонению. Известно, что глубина точно больше нуля и меньше четырёх метров. Обеспечьте контроль ввода.

Пример:
Введите максимально допустимый уровень опасности: 0.01
Приблизительная глубина безопасной кладки: 0.732421875 м

But the first condition doesn't work.
def calculate_hazard_level_by_depth(depth):
    result = depth ** 3 - 3 * depth ** 2 - 12 * depth + 10
    return result


acceptable_hazard_level = float(input('Введите максимально допустимый уровень опасности: '))

while True:
    min_depth = 0
    max_depth = 4.0
    current_depth = (max_depth + min_depth) / 2
    # значение в минус - давление, значение в плюс - радиация
    # вычисляем минимальный уровень радиации
    current_hazard = calculate_hazard_level_by_depth(current_depth)
    print(current_depth, current_hazard)
    if current_hazard < 0:
        max_depth = current_depth
    elif current_hazard > acceptable_hazard_level:
        min_depth = current_depth
    else:
        break

print(current_depth)
# print('Приблизительная глубина безопасной кладки:', safe_depth, 'м')

Tell me, where did you go wrong?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
soremix, 2021-11-19
@nihi1ist

At the beginning of the loop, all variables that you have changed are reset.

while True:
    min_depth = 0
    max_depth = 4.0

Pull out these two

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question