How to pass a variable between functions in Python
Question: Sorry for the long code, but I felt that it was important that I include what
I was trying to accomplish. I am a beginner with Python and programming in
general and I was trying to make a simple text-based adventure game. The game
was working good at first until I added the encounter with the bees. I ran the
program and I chose to run from the bear, so my hp should be at 40, which was
displayed. However, when I chose to swat the bees, my hp should then be at 0
because 40(my current hp)-40=0. My hp is however is displayed at 60, as if the
bear encounter never happened. Is there some way I can fix this or is this a
limitation in Python?

    
    
    from sys import exit
    from time import sleep
    import time
    
    #Hp at start of game:
    hp = 100
    
    #The prompt for inputs
    prompt = "> "
    
    #Bear encounter
    def bear(hp):
        choice = raw_input("> ")
        if "stand" in choice:
            print "The bear walks off, and you continue on your way"
        elif "run" in choice:
            print "..."
            time.sleep(2)
            print "The bear chases you and your face gets mauled."
            print "You barely make it out alive, however you have sustained serious damage"
            hp = hp-60
            currenthp(hp)
        elif "agressive" in choice:
            print "..."
            time.sleep(2)
            print "The bear sees you as a threat and attacks you."
            print "The bear nearly kills you and you are almost dead"
            hp = hp-90
            currenthp(hp)
        else:
            print "Well do something!"
            bear(hp)
    
    #Bee encounter
    def bee(hp):
        choice = raw_input(prompt)
        if "run" in choice:
            print "..."
            sleep(2)
            print "The bee flies away and you continue on your way."
            currenthp(hp)
        elif "swat" in choice:
            print "..."
            sleep(1)
            print "You succesfully kill the bee. Good Job!"
            sleep(1)
            print "Wait a minute"
            sleep(2)
            print "The bee you killed gives off pheremones, now there are hundreds of bees chasing you."
            print "The bees do some serious damage."
            hp = hp-40
            sleep(1)
            currenthp(hp)
        else:
            print "Well, do something."
            bee(hp)
    
    #Function to display the current hp of the current player
    def currenthp(hp):
        if hp < 100:
            print "Your hp is now at %d" % hp
        elif hp <= 0:
            dead()
        else:
            print "You are still healthy, good job!"
    
    #Called when player dies
    def dead():
        print "You sustained too much damage, and as a result have died."
        time.sleep(3)
        print "GAME OVER!"
        print "Would you like to play again?"
        choice = raw_input("> ")
        if "y" in choice:
            start_game()
        else:
            exit(0)
    
    #Called to Start the Game, useful for restarting the program       
    def start_game():
        print "Welcome to Survival 101"
    
    #START OF GAME
    start_game()
    print "You start your regular trail."
    print "It will be just a little different this time though ;)"
    
    time.sleep(3)
    print "You are walking along when suddenly."
    time.sleep(1)
    print "..."
    time.sleep(2)
    
    #Start of first encounter
    print "Wild bear appears!."
    print "What do you do?"
    print "Stand your ground, Run away, be agressive in an attempt to scare the bear"
    
    #first encounter
    bear(hp)
    
    #Start of second encounter
    print "You continue walking and see a killer bee approaching you"
    print "What do you do"
    print "run away, swat the bee away"
    bee(hp)
    


Answer: You pass `hp` to functions and inside a function you are update it, but you
are not getting the updated value `hp` back from the function. You should
specify `return(hp)` inside the function to return the updated value, and you
can store (or update) the updated value in the function call - e.g., `hp =
bear(hp)`.

