Бэквудский лес. Роща больших бурлов

Помогите пройти уровень. Возникла еще одна проблема. Вроде бы все верно , но возникает какая то ошибка, что цель не определена. Как такое может быть? Я же ее указал.

# Не атакуй бурлов!
# Функция может возвращать значение.
# Результатом вызова функции станет число, которое она вернула.

def shouldAttack(target):
    # return False Если нет цели
    if not target:
        return false
    # return False Если видишь бурла
    if target.type == "burl":
        return false
    else:
    # Иначе, return True
        return True

while True:
    enemy = hero.findNearestEnemy()
    # Используй функцию `shouldAttack()`, чтобы принять решение об атаке!
    # Переменной `heroShouldAttack` будет присвоено значение, которое вернула функция `shouldAttack()`!
    heroShouldAttack = shouldAttack(enemy)
    if heroShouldAttack:
        hero.attack(enemy)
 

Вы можете дать ссылку на этот уровень?

https://codecombat.com/play/level/burlbole-grove?

Удалите инструкцию else и верните True

в 11 строке как была ошибка так и осталась return false. (ошибка указателя): false не определен.

напишите return False для обеих строк возврата. Как это:

return False

Не понял. мы пишем, если нет цели то возвращение к функции атаки ложное. Далее мы пишем, если цель бурл, то возвращение к функции атаки ложное. Затем должно следовать возвращение в остальных случаях к функции атаки истинно. Почему вы предлагаете написать там тоже ложь? Так же не будет работать код. Поясните пожалуйста.

Я имел в виду, что в первой части, где вы возвращаете false, вы должны возвращать False с большой буквы, то же самое для следующей. Для возврата True удалите оператор else, и он должен работать.

What I meant was that in the first part, where you return false, you should return False with a capital F, same for the next one. For the return True, delete the else statement, and it should work.

Вместо того

return false

ставить

return False
1 Like

Да это была ошибка в заглавной букве. Но сейчас герой не атакует врагов. Что то опять не так.

# Не атакуй бурлов!
# Функция может возвращать значение.
# Результатом вызова функции станет число, которое она вернула.

def shouldAttack(target):
    # return False Если нет цели
    if not target:
        return False
    # return False Если видишь бурла
    if target.type == "burl":
        return False
    # Иначе, return True
        return True

while True:
    enemy = hero.findNearestEnemy()
    # Используй функцию `shouldAttack()`, чтобы принять решение об атаке!
    # Переменной `heroShouldAttack` будет присвоено значение, которое вернула функция `shouldAttack()`!
    heroShouldAttack = shouldAttack(enemy)
    if heroShouldAttack:
        hero.attack(enemy)
 

Удалите отступ здесь:

    return True

Все! Я решил! Спасибо! Но else все таки был нужен. Меня подвела буква. Опечатки важны.

Вы это решили? Если да, поставьте галочку рядом с тем комментарием, который помог вам больше всего.

Did you solve it? If so, please check the tik mark next to someone’s comment that helped you the most.
Lydia

1 Like

This topic was automatically closed 12 hours after the last reply. New replies are no longer allowed.