Well, just to give you a bit of confidence ... the prof has given you good advice. Now for the details ... !
First, you need to plan your code. Make a plan (sometimes called pseudocode) that doesn't go into the details, but clearly and generally spells out exactly how the game will be played. By "generally", I mean that you can say things like
...
while True:
letter = do_turn
if letter in puzzle and letter not in already_used:
add_to_puzzle
else:
increase_misses
print message
...
So you can see that the plan doesn't give any details as to HOW some of these steps will happen; it's just a big-picture plan.
Do that first. Post it here if you like, and we can give pointers.
Then, create each function. I would do each function separately and make sure it works by testing it. The testing happens by passing the function typical arguments, and making sure it gives the right return values back.
Thus:
# Code version 1
def get_secret():
"""Get the secret word/phrase"""
input = raw_input(word)
# etc.
# test get_secret
word = get_secret()
print word # Code version 2
def get_secret():
"""Get the secret word/phrase"""
input = raw_input(word)
# etc.
def do_turn(display, misses):
print display
# etc.
# test get_secret
word = get_secret()
print word
# test do_turn
display = "_ETTE_"
misses = 2
letter = do_turn(display, misses)
print letter
And so on. The idea here is this:
(1) Each function should do *one* thing. (The version of get_secret in your code tries to do too much, which paradoxically makes it less useful because it has trouble fitting into the big picture.
(2) The purposes of making functions are to (a) isolate actions like do_turn so that you can focus on just doing that one thing (that's the main benefit for you now), and (b) creating code that can be reused elsewhere (that's the main benefit as you get further along).
(3) As you write the functions, focus on the requirements your prof has given. Pay attention to what the function should receive, and make sure it returns what it should return. Functions should, for the most part, not have side effects besides returning the value that is specified.
So: make a plan. Then make functions, one at a time, and test them.
Then finally, put the functions together in your code according to the plan. And it should all work out! (hah-hah...debugging often takes a while :))
Hope it helps,
Jeff