Аргументы функций
Задания
- Аргументы должны быть разделены запятыми, но здесь легко ошибиться, добавив лишнюю запятую или пропустив нужную. Прежде всего запустите эту программу и посмотрите журнал ошибок, чтобы увидеть, какие сообщения об ошибках вы получаете, когда забываете запятую. Всякий раз, когда вы увидите такое сообщение, это значит, что вы, наверное, где-то ошиблись с запятой.
Действие, когда вы исправляете свой код, заглядывая в журнал ошибок, называется отладкой.
Итак, поставьте запятую и идитеwaddle()
и хватайте рыбуgrab()
!
- Вам нужно четыре строчки кода, но первые две мы уже сделали за вас 😉
Ваша задача: поставить пингвина (назовём её jen) в строке 1, столбце 3, обращённой на север, 0 рыб у неё в руках.
jen = Penguin(?, ?, ?, ?)
И не забудьте, что она должна схватить рыбу!
- Пэм по-настоящему голодна, а здесь много рыбы, чтобы поесть! Ваш код будет очень длинным и скучным. Это должно быть нудное задание, но мы собираемся научить вас эффективному способу избавиться от этой скуки… Не волнуйтесь!
-
Хорошая новость! Есть способ лучше, чем писать
penjee.waddle()
penjee.grab()
снова, снова и снова…
И нам для помощи понадобятся аргументы. Мы увидим, как можно повторить два действия (penjee.waddle() и penjee.grab()
) столько раз, сколько мы хотим. Мы будем использовать то, что называется цикл.
Питон — это всегда про отступы. Если вы хотите сгруппировать команды, то вы должны поставить перед ними отступы.
В этом задании у Penjee, нашего пингвина, есть цель: в конце концов получить рыбу.
Нам нужно, чтобы только командаwaddle()
была с отступом (потому что это единственная инструкция, которая должна повторятся снова и снова).
Всё, что вам нужно сделать, это удалить отступ перед четвёртой строкой!
- Можно подумать, что вы много кормите Пэм, но… Угадайте, что?
Ага! Она опять голодна 😉
Итак в этом задании мы попытаемся больше познакомиться с отступами.Псевдокод:
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
- Давайте ещё немного потренируемся в отладке.
В этом задании есть одна синтаксическая ошибка, для её исправления вам понадобится знание синтаксиса, необходимого для создания цикла. Запустите, прочитайте сообщение об ошибке и исправьте её!
- Итак, Пэм, как обычно, хочет съесть рыбу. Для того чтобы это сделать, ей придётся начать с (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
- Теперь, когда мы научились писать цикл, будем тренировать этот навык. На этот раз есть только одна рыба, которую надо взять
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), а вам необходимо написать цикл!
- Как вы можете заметить, это почти то же самое задание, как и предыдущее, с той только разницей, что в конце не вода, а рыба. Используйте снова метод
isSafe(ahead)
.Псевдокод:
instantiate Pam at 0,0 Begin loop while pam is safe ahead pam waddle End loop pam grabs the fish
- Бедная Памела. Она хочет
grab()
всю рыбу и перейти на следующее задание (где, она знает, есть больше рыбы, ожидающей её неуёмный аппетит). И это вовсе не вина Пэм.
Если вы помните, логическая ошибка, это когда наш код делает что-то другое, чем то, что мы хотим. Логические ошибки не сбой программы, и поэтому их зачастую трудно определить.
Если вы запустите код, вы увидите, что это задание не выполнено. Проблема с логикой нашего кода.
Лучший друг программиста журнал ошибок! Журнал поможет вам добраться до сути многих ошибок. Это должно быть первое место, куда вы смотрите, когда что-то идет не так, как ожидалось.
Спросите себя : «что должен показать журнал ошибок?»
Затем, запустите программу, поэтапно и внимательно посмотреть на вывод в журнале. Сравниваем фактический вывод с тем, что должно быть в журнале.
Найдите логическую ошибку и исправьте её!
- Чтобы Пэм получила рыбу, вам нужно написать, во-первых, цикл для сбора рыб в верхнем ряду, а во-вторых, после цикла вы не отступаете, а добавляете несколько строчек кода, чтобы
grab()
оставшихся рыб!
- Последнее задание. Дело знакомо вам: Пэм голодна, но на её пути камень. Итак, обходим его!