Проблема с кодом.Уровень для меня очень сложный

Без понятия,что я делаю не так.Кто решил эту проблему-пишите её решение:

Привет, можешь ли ты отформатировать свой код с помощью кнопки </>? Спасибо!

English

Hi, can you please format your code using the </> button? Thanks!

У меня нет такой кнопки на клавиатуре.Если ты про клавишу “Tab”,то да-она есть


Вставьте свой код в кавычки

1 Like
def findMostHealth(enemies):
    target = None
    targetHealth = 0
    enemyIndex = 0
    while enemyIndex < len(enemies):
        enemy = enemies[enemyIndex]
        if enemy.health > targetHealth:
            target = enemy
            targetHealth = enemy.health
        enemyIndex += 1
    return target

def valueOverDistance(item):
    return item.value / hero.distanceTo(item)

# Возврати предмет с наибольшим значением `valueOverDistance(item)`.
def findBestItem(items):
    bestItem = None
    bestValue = 0
    itemsIndex = 0
    
    # Перебери массив предметов.
    # Найди предмет с наибольшим значением `valueOverDistance()`.
    while itemsIndex<len(items):
        item=items[itemsIndex]
        if item.value>bestValue:
            valueOverDistance()
    return bestItem

while True:
    enemies = hero.findEnemies()
    enemy = findMostHealth(enemies)
    if enemy and enemy.health > 15:
        while enemy.health > 0:
            hero.attack(enemy)
    else:
        coins = hero.findItems()
        coin = None
        coin = findBestItem(coins)
        if coin:
            hero.moveXY(coin.pos.x, coin.pos.y)

Слушай, ты не ставил пробелов между своим = и твоим < и >

English

Look, you haven’t put any spaces between your = and your < and >


Всё равно проблема не исчезла

Ты знаешь, что красный ящик говорит по-английски?

English

Do you know what the red box says in English?

It says that it can’t read “value”, because it’s not defined.

Я думаю проблема в item, а не в value. В той функции Вы не определили item. Нельзя возвращать то, чего Вы не определили.
Я давно не играл в CodeCombat, так что простите если я помогаю не правильно.

2 Likes

Вы должны вставить параметр для функции, когда вы вызываете ее внутри цикла while true

You have to insert a parameter for the function when you call it inside the while true loop

valueOverDistance(there has to be a parameter here) when calling it because you entered valueOverDistance(item)

valueOverDistance (здесь должен быть параметр) при его вызове, потому что вы ввели valueOverDistance (** item **)

Thanks.I have a progress,but hero don’t collect of gold.

Why is it not correct?

item is not a global variable, you have to define it. Maybe you meant: coins

2 Likes

Ошибка появляется потому что Вы пишите item, а определяете coin.

2 Likes

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


с какой проблемой вы столкнулись?

1 Like

Хоть я и прошёл этот уровень,но главный герой багует.Может вы сможете найди мои небольшие косяки в моём коде?

Как сделать так,чтобы герой заходил в разные телепорты ,а не в один каждый раз?



Скриншота два,чтобы видеть весь код

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

English

I noticed that you never buy spaces around your = signs. But apparently it works for you because you passed the level