1、买家具
需要突出:户型,面积,地址
class House:
def __init__(self, info, area, addr):
self.info = info
self.area = area
self.addr = addr
self.furniture_lst = [] # 用来保存家具名称
# 添加家具
def add_furniture(self, furniture):
# furniture 接收传进来的对象(实际上接受的是地址),例如床的对象,彩电对象等
# self.furniture_lst = [] # 如果将列表放在此处,每次程序执行时,
# 上次传递的对象被初始化,列表变量self.furniture_lst将会被重新赋值为
# 一个空列表,将不会显示上一次添加的对象名称,只显示本次程序执行传递的对象
self.area = self.area - furniture.area
# house的剩余面积=house当前面积-家具面积
self.furniture_lst.append(furniture.name) # 将家具的名称添加到列表中
def __str__(self):
msg = '剩余面积{},户型是{},在{}买的房子'.format(self.area, self.info, self.addr)
msg1 = '新添的设备{}'.format(self.furniture_lst)
return msg + msg1
# 创建床类
class Bad:
def __init__(self, name, area):
self.name = name
self.area = area
def __str__(self):
msg = '{}面积是{}平'.format(self.name, self.area)
return msg
house = House('三室一厅', 130, '五方桥')
print(house)
bad = Bad('上下铺', 2)
print(bad)
house.add_furniture(bad) # 将bad对象添加到house
print(house)
bad1 = Bad('双人床', 4)
house.add_furniture(bad1) # 给房子再添加一个双人床
print(house)
运行结果:
剩余面积130,户型是三室一厅,在五方桥买的房子新添的设备[]
上下铺面积是2平
剩余面积128,户型是三室一厅,在五方桥买的房子新添的设备['上下铺']
剩余面积124,户型是三室一厅,在五方桥买的房子新添的设备['上下铺', '双人床']
‘’’
2、人猿大战
人类:name,affack,left 100,10 80(人类的生命值)=100-20(猩猩的攻击力)
猩猩类:name,affack,left 100,20
class Person: # 创建人类
def __init__(self, name, atk, left): #初始化人类名字,攻击力,剩余生命值
self.name = name
self.atk = atk
self.left = left
def attack(self, star_star): # 此函数为人猿大战函数,现在情况是人攻击猩猩,将创建的猿类对象star1对应的地址传给了star_star,以此可以在人类的函数体内调用star_star也就是猿类对象star1的函数属性
star_star.left = star_star.left - self.atk
#猿类对象star1剩余生命值就等于猿类对象star1函数体所对应的原始剩余生命值(star_star.left=star1.left=self.left)减去人类对象person所对应的函数体中对应的人类攻击力(self.atk)
# def attack(self,person): 同理可以创建猩猩攻击人的函数
# person.left=person.left-star1.atk
#人类对象person的剩余生命值就等于人类原始剩余生命值(self.name)减去猿类对象star_star对应的猿类函数体中的猿类攻击力即(star_star.atk)
def __str__(self): #以字符串形式输出
msg = '{}的攻击力是{},剩余生命力{}'.format(self.name, self.atk, self.left)
return msg
class Starstar(): #创建猿类
def __init__(self, name, atk, left): #初始化猿类名字,攻击力,剩余生命值
self.name = name
self.atk = atk
self.left = left
def __str__(self): #以字符串形式输出猿类的特征
msg = '{}的攻击力是{},剩余生命力{}'.format(self.name, self.atk, self.left)
return msg
person = Person('诸葛亮', 10, 100) #创建人类的对象
print(person)
star1 = Starstar('金刚', 20, 100) # 创建猿类对象
print(star1)
person.attack(star1) # 人攻击猩猩,将star1的地址传给了star_star
print(star1) #最后打印结果在猿类函数体内执行
# person.attack(person) # 猩猩攻击人
# print(person)
运行结果:
诸葛亮的攻击力是10,剩余生命力100
金刚的攻击力是20,剩余生命力100
金刚的攻击力是20,剩余生命力90