无法执行Python方法

时间:2018-05-23 09:08:38

标签: python python-3.x

尽管我做了最好的尝试,但我无法减少获得所需的输出。到目前为止,我已经提供了我的进展(在问题之后)。

编写一个名为Patient的类,它具有以下数据属性:

  

name(类型字符串),height(类型float),has_hair(类型       布尔值)

患者类应该有__init__方法(即初始化程序),该方法接受患者的nameheighthas_hair作为参数。应将这些值分配给对象的nameheighthas_hair数据属性。默认情况下,let has_hair = 0

每位患者应从0片开始,存储在属性片剂中。 collect_tablets(number)方法将给定数量的平板电脑添加到患者的电话号码中。此函数也应该能够被称为collect_tablets(),它只会在总数中添加一个范围。

eat()方法从患者总数中消耗一片药片,但将患者身高增加0.1米。如果患者没有任何baranges,则该方法应该打印

  

"我没有吃任何药片!"

A'盛宴()'方法从患者总数中消耗五片药片。如果患者在节日时没有多毛,他会长出头发。如果病人在节日时已经毛茸茸,他会增长50%(例如:2米长的病人长到3米)。 一个秃顶的病人,只会长出头发,除非他以后吃饭,否则他不会长高。如果患者没有足够的药片用于盛宴,则该方法应该打印

  

“我没有足够的平板电脑来盛宴!”

 TEST CASE:
 hungry_patient = Patient("Jack", 1.89)
 hungry_patient.collect_tablets()
 hungry_patient.eat()
 print(hungry_patient)

  OUTPUT
  Jack is a 1.99 m tall blork!

我的代码是:

class Patient:
    def __init__(self, name, height, tablets = 0, has_hair=False):
    """Blork constructor"""
    self.name = name
    self.height = height
    self.tablets = tablets
    self.has_hair = has_hair

  def collect_tablets(self):
    self.tablets = self.tablets + 1

  def eat(self):
    if self.tablets == 0:
        print(“I don't have enough to eat”)
    else: 
        self.tablets = self.tablets - 1
        self.height = self.height + 0.1

  def feast(self):
    if self.tablets >= 5:
        if self.has_hair == True:
            self.height = self.height + 0.5 * (self.height)
        if self.has_hair == False:
            self.has_hair = True
    else:
        print("I don't have enough baranges to feast!")


 hungry_patient = Patient("Jack", 1.89)
 hungry_patient.collect_tablets()
 hungry_patient.eat()
 print(hungry_patient)

我无法让程序执行。

请帮助并告诉我我做错了什么。

1 个答案:

答案 0 :(得分:0)

首先,代码中存在无效字符。在第14行:

print(“I don't have enough to eat”)

将特殊的开盘价和收盘价更改为标准双引号:

print("I don't have enough to eat")

修复上面和一些缩进问题后,代码会运行,但输出只是您正在打印的对象实例的原始字符串表示。

<__main__.Patient instance at 0x7f17180af3b0>

要定义自定义字符串表示形式,您需要在类上定义__str__和/或__repr__方法。看看Python documentation

def __str__(self):
  return "%s is a %s m tall blork!" % (self.name, self.height)

完整的工作代码:

class Patient:
  def __init__(self, name, height, tablets = 0, has_hair=False):
    """Blork constructor"""
    self.name = name
    self.height = height
    self.tablets = tablets
    self.has_hair = has_hair

  def collect_tablets(self):
    self.tablets = self.tablets + 1

  def eat(self):
    if self.tablets == 0:
        print("I don't have enough to eat")
    else: 
        self.tablets = self.tablets - 1
        self.height = self.height + 0.1

  def feast(self):
    if self.tablets >= 5:
        if self.has_hair == True:
            self.height = self.height + 0.5 * (self.height)
        if self.has_hair == False:
            self.has_hair = True
    else:
        print("I don't have enough baranges to feast!")

  def __str__(self):
    return "%s is a %s m tall blork!" % (self.name, self.height)


hungry_patient = Patient("Jack", 1.89)
hungry_patient.collect_tablets()
hungry_patient.eat()
print(hungry_patient)