1.模拟栈操作原理
先进后出
  ​1.初始化(创建一个存储数据的列表)
  2.进栈使用列表保存数据
​  3.出栈 使用列表删除数据
​  4.查看栈顶元素 切片获取列表最后一位数据
  ​5.判断是否为空栈
  6.栈的长度

程序
stack=[]
info="""
********栈操作******
1.入栈
2.出栈
3.栈顶元素
4.栈的长度
5.栈是否为空
"""
while True:
print(info)
choice=input("please input your choice:")
if choice=='1':
item=input('请输入入栈元素:')
stack.append(item)
print('%s入栈成功!'%item)
elif choice=='2':
if not stack:
print('栈为空,不能出栈!')
else:
item=stack.pop()
print('%s出栈成功!'%item)
elif choice=='3':
if len(stack)==0:
print('栈为空!')
else:
print('栈顶元素为:%s'%stack[-1])
elif choice=='4':
print('栈的长度为%s'%len(stack))
elif choice=='5':
if len(stack)==0:
print('栈为空!')
else:
print('栈不为空!')
elif choice=='q':
print('logout')
break
else:
print('Error:check your input!')

  输出结果:

********栈操作******
1.入栈
2.出栈
3.栈顶元素
4.栈的长度
5.栈是否为空 please input your choice:1
请输入入栈元素:2
2入栈成功! ********栈操作******
1.入栈
2.出栈
3.栈顶元素
4.栈的长度
5.栈是否为空 please input your choice:

  

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)
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 __str__(self):
# python能够自动的将一对括号内部的代码连接在一起
return ("户型: %s\n总面积: %.2f[剩余: %.2f]\n家具:%s"
%(self.house_type, self.area,
self.free_area, self.item_list))
def add_item(self, item):
print("要添加 %s" % item)
if item.area > self.free_area:
print("%s的面积太大了,无法添加" % item.name)
return
self.item_list.append(item.name)
self.free_area -= item.area bed = HouseItem("床", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table) my_home = House("两室一厅", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

  

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: #Gun枪
def __init__(self, model):
self.model = model
self.bullet_count = 0
def add_bullet(self, count):
self.bullet_count += count
def shoot(self):
if self.bullet_count <= 0:
print("[%s没有子弹了..." % self.model)
return
self.bullet_count -= 1
print("[%s]突突突...[%d]" % (self.model, self.bullet_count)) class Soldier:
def __init__(self,name):
self.name = name
self.Gun = Gun
def fire(self):
if self.Gun is None:
print("[%s]还有枪..." % self.name)
return
print("冲啊炮灰们...[%s]" % self.name)
self.Gun.add_bullet(50)
self.Gun.shoot() AK47 = Gun("AK47")
xusandou = Soldier("士兵")
xusandou.Gun = AK47
xusandou.fire()
print(xusandou.Gun)
 

Python面向对象练习题的更多相关文章

  1. python 面向对象进阶之内置方法

    一 isinstance(obj,cls)和issubclass(sub,super) 1.1,isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(obj ...

  2. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  3. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  4. python面向对象进阶(八)

    上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  5. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  6. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  7. Python面向对象详解

    Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是

  8. python 面向对象和类成员和异常处理

    python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...

  9. python入门练习题1

    常见python入门练习题 1.执行python脚本的两种方法 第一种:给python脚本一个可执行的权限,进入到当前存放python程序的目录,给一个x可执行权限,如:有一个homework.py文 ...

随机推荐

  1. illustrating javascript prototype & prototype chain

    illustrating javascript prototype & prototype chain 图解 js 原型和原型链 proto & prototype func; // ...

  2. front-end & web & best code editor

    front-end & web & best code editor 2019 VS Code https://designrevision.com/best-code-editor/ ...

  3. how to drag a tab to open it in a new window

    how to drag a tab to open it in a new window 在新的窗口中打开拖拽的 tab? https://superuser.com/questions/131928 ...

  4. Linux零拷贝技术

    本文转载自Linux零拷贝技术 导语 本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较 ...

  5. banner自用图床2

  6. Java开发工程师最新面试题库系列——Spring部分(附答案)

    Spring Spring框架是什么? 答:Spring是轻量级的面向切面和控制反转的框架.初代版本为2002年发布的interface21,Spring框架是为了解决企业级应用开发的复杂性的出现的, ...

  7. vue版本一直是2.9.6版本,卸载也卸载不掉,更新也更新不了

    原文链接:https://blog.csdn.net/zlzbt/article/details/110136755 主要是找到本地文件 E:\StudyFile\VueStudy λ where v ...

  8. [计算机图形学]Blinn-Phong光照模型

    目录 一.前言 二.原理 三.代码 一.前言 Blinn-Phong光照模型以Phong模型为基础的,提供比Phong更柔和.更平滑的高光,而且由于Blinn-Phong的光照模型省去了计算反射光线的 ...

  9. 前端传递数据到后台的两种方式;创建一个map或者创建一个FormData对象

    一.构建一个map getAllDeptAllUsers(){ const modleCode = {'auditMenuId': this.auditMenuId, 'enterpriseId': ...

  10. MySQL:单表查询

    在线数据库:http://sqlfiddle.com/ 建表脚本:https://gitee.com/bqzzz/sql/tree/master/Scripts 基本查询 ①.查询所有记录 SELEC ...