Think what you want to do is finish the loop before the "walk" ends.
The way you have it - the loop will just stop wherever the feet are when the key is released.
What you need to do is set up a world variable with a default value of false, make it true while the key is pressed and go to false when it is released.
Then do the loop as a while statement based on that variable. That way the whole loop will be executed before the variable is tested again to see if the key has been released.
Hope this answers your question. I like the "kirby thing", by the way.