I see a couple problems here. The big one being with this section of code:
# Find the item with the highest valueOverDistance()
I fixed the indentation on this code, because it's really hard to tell if yours is correct due to the formatting of your post. Now, the problem is your if statement. What you're asking, is if the value of one coin is greater than the value of another, then you get the valueOverDistance of the coin. This is backwards. What you need to do, is run your loop of items (item) through the valueOverDistance function. this will give you the true item value for each coin based on how far you have to travel to get it. Then you need to check if the true value of that particular coin is better than the current bestValue. If it is, then that value is now the best value, and that coin is now the best coin.
Another problem I see, based on what you posted, is your coin statement:
As far as I can tell, coin is not defined anywhere in your code. You will need to make sure that coin is making use of the findBestItem() function when you define it. Also, you can take out the jump statement, your hero is only moving towards the coins you're telling it to, once you fix the code you won't have to jump anywhere. Hope this helps.