Каскадные условия в Penjee

Конструкция if... else... отлично подходит для двух вариантов действий, но что делать, если у нас есть три и более вариантов и различных условий? Это видео представит новую структуру управления elif...

Задания

  1. Твой первый elif... Закончи нашу программу!
    Мы предоставили большую часть кода для вашего первого задания с конструкцией elif.
    Вы увидите, когда запустите код, что блок elif (строки 15-23) не является полным. Нашему алгоритму нужны дополнительные инструкции (еще около 5 строк). Постарайтесь выяснить, какие инструкции вам нужно добавить, чтобы Пэм получила ту рыбу, которую она пропустила.
  2. Препятствия 1
    Пэм начинает в юго-западном углу. Она знает, что где-то на востоке есть рыба. Она может чувствовать её запах. Тем не менее, есть скала – препятствие между ней и этой вкусно пахнущей рыбы!
    Мы предоставили вам условия if и elif. Вам просто нужно написать 4 строку, а затем строки 6 и 7.
  3. Препятствия 2
    Пам начинает в юго-западном углу (19,0). Она знает, что где-то на востоке есть рыба. Она может чувствовать запах. Тем не менее, на этот раз, запах слабый, и она знает, что есть много скалистых препятствий между ней и этой вкусно пахнущей рыбой.
    Ниже приведен частичный код и схема того, что нужно написать. Попробуем разобраться, какие команды идут в строках 4, 6, 8 и 9.
  4. Логическая ошибка с конструкцией elif

    Если вы запустите код, который мы вам дали, то увидите, что дела у нашего бедного пингвина идут не слишком хорошо.

    В этом задании необходимо добавить всего пару строк кода. Вот и все! Звучит просто, да?
    К сожалению, часто сложно понять, где именно нужно добавить эту пару строк. Как только ваши программы становятся длиннее и сложнее, так это сразу отладка кода начинает занимать слишком много времени.

    Но, к счастью, у нас есть некоторые стратегии, которые помогут сократить время, необходимое для исправления логической ошибки.

    В предыдущем видео, мы дали вам стратегию для улучшения процесса отладки путем временного изменения позиции, с которой стартует Пэм .

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

    Шаг 1) Изменить позицию, с которой Пэм начинает исполнять код (примечание: это временное изменение, чтобы помочь нам быстрее добраться до нижней части этой логической ошибки).

    pam = Penguin(8 , 13, south)

    Шаг 2) Используйте кнопку “Single Step”, чтобы запускать код строку за строкой и определить, какие изменения необходимо внести, чтобы исправить логическую ошибку.

    Шаг 3) Исправьте логическую ошибку и повторите шаг 2, чтобы убедиться, что всё сейчас работает нормально.

    Шаг 4) После устранения логической ошибки восстановите начальную позицию Пэм в столбце 3 строки 2 с помощью кода, приведенного ниже.

    pam = Penguin(2, 7 , east)

    Важная идея: Сделайте вашу жизнь проще. Когда определенная часть вашей программы причиняет вам проблемы, используйте функцию “Single Step”, и вы можете сделать временное изменение позиции, откуда начинает Пэм, чтобы немедленно проверить/отладить проблемную часть вашей программы.

  5. Скалы, вода и узор рыб

    Можно вспомнить старое задания, которое вы уже сделали в предыдущем разделе (Смотрите!) . Мы добавили еще несколько рыб в эту задачу . В основном, в качестве отправной точки можно использовать старый код из предыдущего назначения, добавив в него новую конструкцию, с которой мы знакомимся в этом разделе.

    Псевдокод:

    instantiate pam at 1,0
    
    BEGIN loop 
      while pam is not at wall
          BEGIN if test
              if pam has rock on left
              then    
                  pam fetch that fish
                  pam return back to original location
              else if pam has fish on left
              then    
                  pam get that fish
              else 
                pam waddle
          END if
    END loop

  6. if одно, elif другое 😉
    Запустите Пэм в позиции 3,0 (Вы должны начать там!)
    Удачи!