1.模拟栈操作原理
代码:
# 栈操作
class Stack():
# 初始化
def __init__(self):
# 定义了一个空栈,stack:类的属性
self.stack = []
# 进栈
def push(self,value):
self.stack.append(value)
return True
# 出栈
def pop(self):
# 先判断栈是否为空
if len(self.stack) == 0:
return False
else:
item = self.stack.pop()
return item
# 栈顶元素
def top(self):
# 先判断栈是否为空
if self.stack:
return self.stack[-1]
else:
return False
# 是否为空栈
def isnone(self):
if len(self.stack) == 0:
return True
else:
return False
# 栈的长度
def length(self):
return len(self.stack)
def view(self):
return ','.join(self.stack)
# 创建对象
stack1 = Stack()
# 调用方法
print(stack1.isnone())
print(stack1.length())
print(stack1.push('westos'))
print(stack1.length())
print(stack1.isnone())
print(stack1.pop())
print(stack1.isnone())
print(stack1.top())
print(stack1.push('linux'))
print(stack1.push('python'))
print(stack1.view())
运行结果:
2.家具放置问题
需求:
1.房子有户型,总面积和家具名称列表,新房子没有任何的家具
2.家具有名字和占地面积,其中
床: 占4平米
衣柜: 占2平面
餐桌: 占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
分析:
# 1.由于要将家具放入房子中,所以需要先创建家具类
# 2.家具类:
# (1)属性:名字(name),占地面积(area)
# (2)对象:床(bed),衣柜(closet),餐桌(table)
# 3.房子类:
# (1)属性:户型(house_style),总面积(zarea),
# 家具名称列表(namelist) (新房子没有任何的家具,即初始家具名称列表为空列表)
# 剩余面积(farea) (由于打印房子时,要求输出'剩余面积',所以剩余面积为房子的隐含属性)
# (2)方法:添加家具(add_item)
代码:
# 1.定义家具类
class furniture():
# 初始化; name,area:类的属性(家具名称 占地面积)
def __init__(self,name,area):
self.name = name
self.area = area
# str方法:规范化(输出信息)
def __str__(self):
return '%s占%.2f平米' %(self.name,self.area)
# 1).创建家具对象
bed = furniture('bed',4)
closet = furniture('closet',2)
table = furniture('table',1.5)
# print(bed)
# print(closet)
# print(table)
# 2.定义房子类
class house():
# 初始化, house_style zarea:类的属性(户型,总面积)
def __init__(self,house_style,zarea):
self.house_style= house_style
self.zarea = zarea
# farea: 类的属性(剩余面积)
self.farea = zarea
# namelist: 类的属性(家具名称列表)
self.namelist = []
# str方法:规范化(输出信息)
def __str__(self):
return '户型:%s 总面积:%.2f 剩余面积:%.2f 家具:%s' %(self.house_style,self.zarea,self.farea,self.namelist )
### 定义添加家具方法
# item:家具类的一个对象
def add_item(self,item):
# 1.判断房子剩余面积是否能够容纳要添加的家具面积
if self.farea >= item.area:
# 2.append方法:将家具添加到家具列表中
self.namelist.append(item.name)
# 3.计算剩余面积
self.farea -= item.area
else:
print(' %s占地面积过大,无法摆放此家具.....' %item.name)
# 2).创建房子对象
house1 = house('两室一厅',50)
print(house1)
# 3).将家具添加到房子中(调用方法)
house1.add_item(bed)
print(bed)
print(house1)
house1.add_item(closet)
print(closet)
print(house1)
# 创建房子对象
house2 = house('一室一厅',5)
print(house2)
house2.add_item(bed)
print(bed)
print(house2)
# 将家具添加到房子中(调用方法)
house2.add_item(table)
print(table)
print(house2)
运行结果:
3.士兵开枪问题
需求:
1.士兵瑞恩有一把AK47
2.士兵可以开火(士兵开火扣动的是扳机)
3.枪 能够 发射子弹(把子弹发射出去)
4.枪 能够 装填子弹 --增加子弹的数量
Soldier Gun
------------- -----------------
name model
gun bullet_count #子弹数量足够多才能完成射击的动作
------------- -----------------
__init__(self): __init__(self):
fire(self): add_bullet(self,count):#装填子弹的
shoot(self):
分析:
1.由于士兵瑞恩有一把AK47,士兵可以开火。故需要先创建枪类
2.枪类(Gun):
(1)属性:型号(model),子弹数目(bullet_count)
(2)方法:发射子弹(shoot),装填子弹(add_bullet)
3.士兵类(Soldier)
(1)属性:姓名(name),枪名(Gun)
(2)方法:开火(fire)
代码:
# 定义枪类
class Gun():
# 初始化
def __init__(self,model):
self.model = model
self.bullet_count = 0
# 规范化
def __str__(self):
return '%s有%d发子弹' %(self.model,self.bullet_count)
# 定义方法
def shoot(self):
if self.bullet_count > 0:
print('发射子弹....')
self.bullet_count -= 1
else:
print('枪内无子弹,无法发射....')
def add_bullet(self,count):
self.bullet_count += count
print('装填子弹:%s颗....' %count)
# 定义士兵类
class Soldier():
# 初始化
def __init__(self,name):
self.name = name
self.Gun = None
# 定义方法(关联枪类)
def fire(self):
if self.Gun == None:
print('%s还没有枪...' %self.name)
else:
self.Gun.add_bullet(10)
print('开火....')
self.Gun.shoot()
# 创建枪对象
AK47=Gun('AK47')
print(AK47)
#调用方法
AK47.add_bullet(10)
AK47.shoot()
print(AK47)
# 创建士兵对象
瑞恩=Soldier('瑞恩')
# 调用方法
瑞恩.fire()
瑞恩.Gun = AK47
瑞恩.fire()
print(AK47)
运行结果: