这段代码究竟发生了什么?

Lou*_*s93 0 python debugging

我试图重新创建一段基本上是极简主义Tomagatchi的代码.然而,当它被喂食和倾听时,它的"情绪"值不会改变.它仍然"疯狂".任何帮助将不胜感激!

{#Create name, hunger, boredom attributes. Hunger and Boredom are numberical attributes

class Critter(object):
    def __init__(self, name, hunger = 0, boredom = 0):
        self.name = name
        self.hunger = hunger
        self.boredom = boredom

    #Creating a private attribute that can only be accessed by other methods
    def __pass_time(self):
        self.hunger += 1
        self.boredom += 1

    def __get_mood(self):
        unhappiness = self.hunger + self.boredom
        if unhappiness < 5:
            mood = "happy"
        if 5 <= unhappiness <= 10:
            mood = "okay"
        if 11 <= unhappiness <= 15:
            mood = "frustrated"
        else:
            mood = "mad"
        return mood

    mood = property (__get_mood)

    def talk(self):
        print "Hi! I'm",self.name,"and I feel",self.mood,"now."
        self.__pass_time()

    def eat(self, food = 4):
        print "Brrruuup. Thank you!"
        self.hunger -= food
        if self.hunger < 0:
            self.hunger = 0
        self.__pass_time()

    def play(self, play = 4):
        print "Yaaay!"
        self.boredom -= play
        if self.boredom < 0:
            self.boredom = 0
        self.__pass_time()

    def main ():
        crit_name = raw_input("What do you want to name your critter? ")
        crit = Critter (crit_name)

    choice = None
    while choice != "0":
        print \
              """  0 - Quit
                   1 - Listen to your critter.
                   2 - Feed your critter
                   3 - Play with your critter
              """

        choice = raw_input ("Enter a number: ")

        #exit
        if choice == "0":
            print "GTFO."
        #listen to the critter
        elif choice == "1":
            crit.talk()
        #feed the crit crit critter
        elif choice == "2":
            crit.eat()
        #play with the crit crit critter
        elif choice == "3":
            crit.play()
        #some unknown choice
        else:
            print "\nwat"

    main ()
    raw_input ("\n\nHit enter to GTFO")
Run Code Online (Sandbox Code Playgroud)

Gan*_*ndi 7

在_getMood中,应该有elifs.

    if unhappiness < 5:
        mood = "happy"
    elif 5 <= unhappiness <= 10:
        mood = "okay"
    elif 11 <= unhappiness <= 15:
        mood = "frustrated"
    else:
        mood = "mad"
Run Code Online (Sandbox Code Playgroud)

如果没有它们,实际上只是检查11到15之间是否有不快乐,如果没有,则将情绪设定为疯狂.所以从0到10不成功,从16岁开始,一个生物疯了.