Python面向对象练习题
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面向对象练习题的更多相关文章
- python 面向对象进阶之内置方法
一 isinstance(obj,cls)和issubclass(sub,super) 1.1,isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(obj ...
- python 面向对象初级篇
Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...
- Python 面向对象 基础
编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...
- python面向对象进阶(八)
上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- Python面向对象详解
Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是
- python 面向对象和类成员和异常处理
python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...
- python入门练习题1
常见python入门练习题 1.执行python脚本的两种方法 第一种:给python脚本一个可执行的权限,进入到当前存放python程序的目录,给一个x可执行权限,如:有一个homework.py文 ...
随机推荐
- Parcel all in one
Parcel all in one Parcel https://parceljs.org/ # cli $ yarn global add parcel-bundler $ npm install ...
- 小程序 in action
小程序 in action https://github.com/xgqfrms/xcx-taro taro https://taro-docs.jd.com/taro/docs/README.htm ...
- how to change sketch language to chinese
how to change sketch language to Chinese https://www.sketch.com/support/troubleshooting/chinese-loca ...
- Baccarat是如何运用去中心化治理模式的?
区块链的出现,让大家看到了去中心化的可能.去中心化的数字资产从最初的默默无闻,一路起起伏伏发展了十年,逐渐成为了大众认可的价值存储方式.去中心化的金融,使数字资产的生态建设者意识到,即使没有中心化的金 ...
- 「NGK每日快讯」11.25日NGK公链第23期官方快讯!
- [转]百度Appollo无人车Perception Module 分析
https://github.com/ApolloAuto/apollo/blob/master/docs/howto/modules/apollo1.5_perception_module_stud ...
- Java魔法类:Unsafe应用解析
本文转载自Java魔法类:Unsafe应用解析 前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别.不安全操作的方法,如直接访问系统内存资源.自主管理内存资源等,这些方法 ...
- [Python学习笔记]文件的读取写入
文件与文件路径 路径合成 os.path.join() 在Windows上,路径中以倒斜杠作为文件夹之间的分隔符,Linux或OS X中则是正斜杠.如果想要程序正确运行于所有操作系统上,就必须要处理这 ...
- Nginx(八): 观进程锁的实现
前面的nginx系列讲解了nginx很多通用概念,流程,以及核心的http模块的一些实现.应该说大体上对nginx已经不再陌生和神秘. 今天我们不看全局,只看一个非常非常小的细节:nginx是多进程并 ...
- <span>居中
在父元素中加style="text-align:center"; 比如下面这样 <head> </head> <body> <di ...