想要改进简单的python代码

时间:2015-11-29 15:43:34

标签: python python-2.7 python-3.x

我是python编程的新手。这是我想改进的代码

# Critter Caretaker
# A virtual pet to care for

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

    def __pass_time(self):
        self.hunger += 1
        self.boredom += 1

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

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

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

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

    def __str__(self):
        rep = "Attribut value is\n"
        rep += str(self.hunger) + "\n" + str(self.boredom) + "\n"
        return rep


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

    choice = None  
    while choice != "0":
        print \
        ("""
        Critter Caretaker

        0 - Quit
        1 - Listen to your critter
        2 - Feed your critter
        3 - Play with your critter
        """)

        choice = input("Choice: ")
        print()

        # exit
        if choice == "0":
            print("Good-bye.")

        # listen to your critter
        elif choice == "1":
            crit.talk()

        # feed your critter
        elif choice == "2":
            crit.eat()

        # play with your critter
        elif choice == "3":
            crit.play()

        # secret option
        elif choice == "!":
            print(crit)

        # some unknown choice
        else:
            print("\nSorry, but", choice, "isn't a valid choice.")

main()
("\n\nPress the enter key to exit.")

你看,这是一个傀儡,表明他的心情,并寻找你喂他和他玩。每次木偶说话,吃饭或玩 counter pass_time 加2级。属性食物乐趣总是与直接影响情绪的数字相同。我想让用户可以输入可影响木偶情绪的食物量和时间。为什么我不能这样做

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

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

和这个

        choice = input("Choice: ")
        print()

        # exit
        if choice == "0":
            print("Good-bye.")

        # listen to your critter
        elif choice == "1":
            crit.talk()

        # feed your critter
        elif choice == "2":
            food = int(input("How much food?: "))

            crit.eat()

        # play with your critter
        elif choice == "3":
            fun = int(input("How much time?: "))

            crit.play()

        # secret option
        elif choice == "!":
            print(crit)

        # some unknown choice
        else:
            print("\nSorry, but", choice, "isn't a valid choice.")

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你似乎几乎就在那里。让我们以eat函数为例。您想将food变量传递给要使用的类函数。如果需要,还可以添加验证以检查输入的值是否为数字。

elif choice == "2":
    food = int(input("How much food?: "))
    crit.eat(food) # pass food in as a parameter