尽管我做了最好的尝试,但我无法减少获得所需的输出。到目前为止,我已经提供了我的进展(在问题之后)。
编写一个名为Patient的类,它具有以下数据属性:
name(类型字符串),height(类型float),has_hair(类型 布尔值)
患者类应该有__init__
方法(即初始化程序),该方法接受患者的name
,height
和has_hair
作为参数。应将这些值分配给对象的name
,height
和has_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)
我无法让程序执行。
请帮助并告诉我我做错了什么。
答案 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)