-
需求:房子(House)有户型,总面积,和家具名称列表,新房子没有任何的家具,家具(HouseItem)有名字和站地面积,其中席梦思(bed)占地4平米,衣柜(chest)占地2平米,餐桌(table)占地1.5平米。将以上三件家具添加到房子中,打印房子时,要求输出:户型,总面积,剩余面积,家具名称列
class HouseItem():
'''定义家具类,加入名字和占地面积两个静态属性'''
def __init__(self,name,area):
self.name=name
self.area= area
def __str__(self):
return '%s占地面积: %.2f'%(self.name,self.area)
class House():
'''定义房子的类,添加户型、总面积静态属性'''
def __init__(self,house_type,area):
self.house_type=house_type
self.area=area
# 增加剩余面积和家具列表属性
self.free_area=area
self.item_list=[]
def add_area(self,item):
# 判断剩余是否小于家具面积
if self.free_area < item.area :
return
self.item_list.append(item.name)
self.free_area -= item.area
# 重写方法
def __str__(self):
return '户型:%s,总面积为: %.2f,剩余面积为:%.2f,家具有:%s' % (self.house_type,self.area,self.free_area,self.item_list)
if __name__ == '__main__':
bed=HouseItem('席梦思',4)
print(bed)
chest=HouseItem('衣柜',2)
print(chest)
table=HouseItem('餐桌',1.5)
print(table)
house=House('三室两厅',120.5)
house.add_area(bed)
house.add_area(chest)
house.add_area(table)
print(house)
# 分析:秒、分、时是动的,秒先动,分钟再动,小时在动
class NumberClock():
'''定义这个时间的静态属性'''
def __init__(self,hour,minute,second):
self.hour = hour
self.minute=minute
self.second = second
def run(self):
'''定义一个执行second、minute、hour的动态方法'''
self.second += 1
if self.second == 60:
self.second = 0
self.minute += 1
if self.minute == 60:
self.minute = 0
self.hour += 1
if self.hour == 24:
self.hour=0
def show(self):
# 0>2d表示如果长度小于2在右边补0
print(f'{self.hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d}')
if __name__ == '__main__':
import time
NowClock=NumberClock(19,11,30)
# 无限循环
while True:
# 先展示当前的时间
NowClock.show()
time.sleep(1)
# 时间向前滚动
NowClock.run()
-
求平面上两个点之间的距离
# 求平面上两个点之间的距离
class Point():
def __init__(self,x,y):
'''点坐标x,y'''
self.x=x
self.y=y
def __str__(self):
'''展示输入的坐标'''
return f'横坐标:{self.x}纵坐标:{self.y}'
def distance(self,p1): # 传入另一个点对象
'''数学公式:两点间的距离'''
distanc=((p1.x-self.x)**2+(p1.y-self.y)**2)**0.5
return f'{distanc:.2f}'
a=Point(3,4)
print(a) # 打印a点坐标
b=Point(6,8)
print(b) # # 打印b点坐标
print(a.distance(b)) # 对象调用方法