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文 ...
随机推荐
- leetcode solution cracked tutorial
leetcode solution cracked tutorial problemset https://leetcode.com/problemset/all/ Top Interview Que ...
- c++指针练习
Pointers 在getchar处断点,断点后,调试->窗口->反汇编 查看数据 main #include <iostream> #include <Windows. ...
- Flutter 使用高德地图定位
amap_location 包 获取debug SHA1 // 使用debug.keystore获取debug SHA1 C:\Users\ajanuw\.android>keytool -li ...
- NGK——更好的数据与网络
对于NGK而言,帐本是不可或缺的,所以NGK有独立的共识层,共识层有单独的参与的共识节点.而其余计算都丢给其他的计算资源计算,共识层汇总一个正确的结果即可. 进行大量计算过程的资源是另一种节点,在NG ...
- node初体验(二)
1.静态资源访问,需要设置路由和响应标头 2.url模块.path模块.querystring模块 Url { protocol: null, slashes: null, auth: null, h ...
- 下载com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
看别人都说在repo.maven.com下载,没想到竟然要登录 索性我直接在国内阿里云的镜像仓库下载好了,速度又快又方便 搜索aspectj 下载地址:https://maven.aliyun.com ...
- 后端程序员之路 32、Index搜索引擎实现分析1-类的设计
# 1.forward_index 正排索引(正向索引)- filter_t- filter_judge # 2.inverted_index 倒排索引(反向索引)- inverted_pre_sco ...
- javascript中的内存管理
目录 简介 内存生命周期 JS中的垃圾回收器 引用计数垃圾回收算法 Mark-and-sweep回收算法 调试内存问题 闭包Closures中的内存泄露 javascript中的内存管理 简介 在c语 ...
- 微信小程序折线图表折线图加区域图
1.先来个效果图 这里我用的是插件@antv/f2-canvas(安装的方法如下) npm init 此处如果直接使用官方npm install 可能会出现没有node_modules错误 npm i ...
- 定西+简单dp
定西 ECNU-3531 #include<iostream> #include<cstdio> #include<algorithm> #include<c ...