Аргументы и циклы в Penjee

Аргументы функций

Задания

  1. Аргументы должны быть разделены запятыми, но здесь легко ошибиться, добавив лишнюю запятую или пропустив нужную. Прежде всего запустите эту программу и посмотрите журнал ошибок, чтобы увидеть, какие сообщения об ошибках вы получаете, когда забываете запятую. Всякий раз, когда вы увидите такое сообщение, это значит, что вы, наверное, где-то ошиблись с запятой.
    Действие, когда вы исправляете свой код, заглядывая в журнал ошибок, называется отладкой.
    Итак, поставьте запятую и идите waddle() и хватайте рыбу grab()!
  2. Вам нужно четыре строчки кода, но первые две мы уже сделали за вас 😉
    Ваша задача: поставить пингвина (назовём её jen) в строке 1, столбце 3, обращённой на север, 0 рыб у неё в руках.
    jen = Penguin(?, ?, ?, ?)
    И не забудьте, что она должна схватить рыбу!
  3. Пэм по-настоящему голодна, а здесь много рыбы, чтобы поесть! Ваш код будет очень длинным и скучным. Это должно быть нудное задание, но мы собираемся научить вас эффективному способу избавиться от этой скуки… Не волнуйтесь!

  4. Хорошая новость! Есть способ лучше, чем писать
    penjee.waddle()
    penjee.grab()

    снова, снова и снова…
    И нам для помощи понадобятся аргументы. Мы увидим, как можно повторить два действия (penjee.waddle() и penjee.grab()) столько раз, сколько мы хотим. Мы будем использовать то, что называется цикл.

  5. Питон – это всегда про отступы. Если вы хотите сгруппировать команды, то вы должны поставить перед ними отступы.
    В этом задании у Penjee, нашего пингвина, есть цель: в конце концов получить рыбу.
    Нам нужно, чтобы только команда waddle() была с отступом (потому что это единственная инструкция, которая должна повторятся снова и снова).
    Всё, что вам нужно сделать, это удалить отступ перед четвёртой строкой!
  6. Можно подумать, что вы много кормите Пэм, но… Угадайте, что?
    Ага! Она опять голодна 😉
    Итак в этом задании мы попытаемся больше познакомиться с отступами.

    Псевдокод:

    instantiate Penguin pam
    
    BEGIN loop 
      while pam is on a fish
        pam grab
        pam waddle
    END loop
    pam waddle
    pam turn right
    pam waddle
    pam grab last fish

  7. Давайте ещё немного потренируемся в отладке.
    В этом задании есть одна синтаксическая ошибка, для её исправления вам понадобится знание синтаксиса, необходимого для создания цикла. Запустите, прочитайте сообщение об ошибке и исправьте её!
  8. Итак, Пэм, как обычно, хочет съесть рыбу. Для того чтобы это сделать, ей придётся начать с (1, 0) и идти за рыбой waddle().
    Вам надо использовать здесь цикл while и метод isCube(left).
    Примечание: вы должны начать в (1,0). В противном случае вы не сможете завершить это задание.

    Псевдокод:

    instantiate pam at 1,0
    
    BEGIN loop 
      while cube is to left of Pam
        pam waddle
    END loop
    pam waddle
    pam grab the fish

  9. Теперь, когда мы научились писать цикл, будем тренировать этот навык. На этот раз есть только одна рыба, которую надо взять grab().
    Сначала создадим пингвина по имени pam в позиции (1, 0) и используем цикл, чтобы дойти waddle() до воды.
    Условие для вашего цикла должно быть следующее:
    #пока у Пэм впереди свободно
    while pam.isSafe(ahead):
    Давайте посмотрим на псевдокод этого задания!
    Псевдокод:

    instantiate Pam at 0,0
    BEGIN loop 
      while pam is safe ahead
        pam waddle
    END loop
    pam goes around water 
    pam  waddles to fish
    pam grabs the fish

    Напоминание: чтобы успешно завершить это задание, вашему пингвину надо начать с позиции (0, 0), а вам необходимо написать цикл!

  10. Как вы можете заметить, это почти то же самое задание, как и предыдущее, с той только разницей, что в конце не вода, а рыба. Используйте снова метод isSafe(ahead).

    Псевдокод:

    instantiate Pam at 0,0
      Begin loop 
      while pam is safe ahead
        pam waddle
      End loop
    pam grabs the fish

  11. Бедная Памела. Она хочет grab() всю рыбу и перейти на следующее задание (где, она знает, есть больше рыбы, ожидающей её неуёмный аппетит). И это вовсе не вина Пэм.
    Если вы помните, логическая ошибка, это когда наш код делает что-то другое, чем то, что мы хотим. Логические ошибки не сбой программы, и поэтому их зачастую трудно определить.
    Если вы запустите код, вы увидите, что это задание не выполнено. Проблема с логикой нашего кода.
    Лучший друг программиста журнал ошибок! Журнал поможет вам добраться до сути многих ошибок. Это должно быть первое место, куда вы смотрите, когда что-то идет не так, как ожидалось.
    Спросите себя : “что должен показать журнал ошибок?”
    Затем, запустите программу, поэтапно и внимательно посмотреть на вывод в журнале. Сравниваем фактический вывод с тем, что должно быть в журнале.
    Найдите логическую ошибку и исправьте её!
  12. Чтобы Пэм получила рыбу, вам нужно написать, во-первых, цикл для сбора рыб в верхнем ряду, а во-вторых, после цикла вы не отступаете, а добавляете несколько строчек кода, чтобы grab() оставшихся рыб!
  13. Последнее задание. Дело знакомо вам: Пэм голодна, но на её пути камень. Итак, обходим его!