Как исправить код, чтобы улитка избежала колодца за меньшее количество дней

#python-3.x

#python-3.x

Вопрос:

У меня следующая проблема:

Улитка и колодец Улитка падает на дно колодца длиной 125 см. Каждый день улитка поднимается на 30 см. Но ночью, во время сна, скользит на 20 см, потому что стены мокрые. Сколько дней требуется улитке, чтобы избежать колодца?

Это мои переменные и код:

 well_height = 125

daily_distance = 30

nightly_distance = 20

snail_position = 0

days = 0

while snail_position < well_height:
   days  = 1
   snail_position  = daily_distance - nightly_distance
Print (days)
  

Ответ, который я получаю, равен 13, что неверно, потому что я вычислил, что это 11, потому что в последний день улитка выходит и не скользит обратно. Однако я не знаю, как исправить код.

Ответ №1:

Попробуйте следующее:

 well_height = 125
daily_distance = 30
nightly_distance = 20
snail_position = 0
days = 0

while True:
    days  = 1
    snail_position  = daily_distance
    if snail_position >= well_height:
        break
    snail_position -= nightly_distance
print(days)
  

Ответ, который я получил, был 11.

Вы должны иметь в виду, что улитка скользит назад только в том случае, если она не достигает колодца в текущий день. Из-за этого мы добавляем только daily_distance перед проверкой позиции. После этого, если улитка не сделала этого, мы добавляем ночное расстояние.

Кроме того, я предполагаю, что если улитка достигнет расстояния well_height , на котором она завершила свое путешествие. Поэтому я изменил логику с snail_position > well_height на snail_position >= well_height .

Комментарии:

1. @FFF Нет проблем! Если вы нашли это полезным, вы можете отметить этот ответ правильным. Поступая таким образом, вы поможете другим участникам Stack Overflow легко найти ответ на подобные вопросы.