If returning wrong answer (python)

I am working through the "Learn python the hardway." I apologize if this is a duplicate but I really can't figure out what I'm doing wrong. When I enter anything less than 50 it tells me to try again, and upon the second time calls a string in another function. If I enter something greater than 50 same thing on the second entry it calls another string in another function. it will call from green_dragon() and print "Both dragons cook you alive and eat you." Thank you for any insight you are able to offer. I apologize for the simplicity, lol. Had to make my own "game and I'm not that creative yet, lol.

def gold_room():
    print "You have entered a large room filled with gold."
    print "How many pieces of this gold are you going to try and take?"
    choice = raw_input("> ")
    how_much = int(choice)
    too_much = False
    while True:
        if how_much <= 50 and too_much:
            print "Nice! you're not too greedy!"
            print "Enjoy the gold you lucky S.O.B!"
            exit("Bye!")

        elif how_much > 50 and not too_much:
            print "You greedy MFKR!"
            print "Angered by your greed,"
            print "the dragons roar and scare you into taking less."

        else:
            print "Try again!"
        return how_much

def green_dragon():
    print "You approach the green dragon."
    print "It looks at you warily."
    print "What do you do?"
    wrong_ans = False
    while True:
        choice = raw_input("> ")

        if choice == "yell at dragon" and wrong_ans:
            dead("The Green Dragon incinerates you with it's fire breath!")
        elif choice == "approach slowly" and not wrong_ans:
            print "It shows you its chained collar."
        elif choice == "remove collar"and not wrong_ans:
            print "The dragon thanks you by showing you into a new room."
            gold_room()
        else:
            print "Both dragons cook you alive and eat you."
            exit()

Upvotes: 0

Views: 490

Answers (1)

Tony Tannous
Tony Tannous

Reputation: 14866

too_much = False

if <= 50 and too_much

if too_much is set to False, why do you expect the if expression to evaluate to true ? It will never go inside the if.
Move user input inside loop as well.

EDIT:

To stop your while loop:

        too_much = True
        while too_much:
            choice = raw_input("> ")
            how_much = int(choice)
            if how_much <= 50:
                print "Nice! you're not too greedy!"
                print "Enjoy the gold you lucky S.O.B!"
                too_much = False
            else:
                print "You greedy MFKR!"
                print "Angered by your greed,"
                print "the dragons roar and scare you into taking less."

Upvotes: 1

Related Questions