@nihi1ist

Почему не срабатывает условие в коде Python?

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

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

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

Но первое условие не срабатывает
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, 'м')

Подскажите, где ошибся?
  • Вопрос задан
  • 1520 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Вначале цикла сбрасываются же все переменные, которые вы изменили.
while True:
    min_depth = 0
    max_depth = 4.0

Вытащите за цикл эти две
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы