首页 > 解决方案 > 如果输入狗,猫或鸟,我如何让我的程序显示动物发出的噪音

问题描述

name = input("What is your pet's name?")
species = input("What type of pet is it?")
age = input("How old is your pet?")

class Pet:
    def __init__(self, name, species, age, noise):
        self.name = name
        self.species = species
        self.age = age
        self.noise = noise

    def setNoise(self, noise):
            self.noise = "WOOF"
        elif species == cat:
            self.noise = "MEOW!"
        elif species == bird:
            self.noise = "CAWW!"
        else:
            self.noise = "Animal Noise"

    def get_type(self):
        print("Pet")

    def toString(self):
        return"{} is a {} and is {} years old".format(self.name,self.species,self.age,self.noise)

myPet = Pet(name,species,age,noise)
print(noise, myPet.toString())

当我在其中输入某种动物(例如狗、猫或鸟)时,我无法弄清楚如何让程序显示噪音。任何帮助都会很棒。我一直遇到未定义噪声的错误。当我尝试使用我的物种输入来检查它是否等于狗时,它也会出错。

标签: pythonpython-3.x

解决方案


我想这可能是你想要得到的。您使用了cat,bird等变量而没有定义它们。我认为这些应该是字符串。我也摆脱了setNoise似乎没有目的的功能。由于噪声是基于物种的,我将其设置为__init__。Python 还有一个特殊的方法叫做__str__. 如果你设置了这个,那么当我调用print(myPet)它时,它将打印myPet.__str__(). 这比定义自己的字符串方法更好用,因为它会在打印时自动调用。

name = input("What is your pet's name?")
species = input("What type of pet is it?")
age = input("How old is your pet?")
# you might want to set age = int(age) if age is, e.g., an integer number of years

class Pet:
    def __init__(self, name, species, age):
        self.name = name
        self.species = species
        self.age = age

        if species == "dog":
            self.noise = "WOOF"
        elif species == "cat":
            self.noise = "MEOW!"
        elif species == "bird":
            self.noise = "CAWW!"
        else:
            self.noise = "Animal Noise"

    def get_type(self):
        print("Pet")

    def __str__(self):
        return"{} is a {} and is {} years old".format(self.name,self.species,self.age,self.noise)

myPet = Pet(name, species, age)
print(myPet.noise, myPet)

推荐阅读