python面向对象之练习题2
练习题
需求:
- 士兵 可以 花钱买一个AK47
- 士兵 可以 用开开火
- 士兵 可以 买弹夹
- 士兵 可以 上子弹
- 士兵 可以 给 枪 添加子弹
- 枪 需要弹夹和有子弹的情况下,借助士兵扣动扳机 才能开火
- 枪 借助 人 可以 添加 弹夹
- 弹夹中有子弹数量和价格
'''枪'''
class Gan:
dic = {
"AK47":2000,
"M4A":1000,
"ATM":10000
}
def __init__(self,name,prize):
if Gan.dic.get(name):
self.name = name
m = Gan.dic.get(name)
print(m)
if prize >= m:
self.prize = m
else:
raise "钱不够"
self.zd = None
else:
raise "没有这把枪"
# 添加弹夹
def add_zd(self,zd):
self.zd = zd
def FireStarter(self):
if self.zd.nums <= 0:
print("没有子弹,没办法开火")
else:
self.zd.nums -= 1
print(f"突突突突突突突突.....,子弹数量为{self.zd.nums}")
'''士兵'''
class Sb:
def __init__(self,name,money):
self.name = name
self.money = money
self.gan = None
self.zd = None
# 买枪
def buy_gan(self,gan_name,gan_money):
if self.money >= gan_money:
gan = Gan(gan_name,gan_money)
self.gan = gan
self.money -= gan_money
print(f'{self.name} 购买了 {gan_name}')
return gan
else:
print(f'钱不够')
# 买弹夹
def buy_zd(self,zd_prize):
if zd_prize > 1000:
zd = Zd(zd_prize)
if self.money >= zd.prize:
self.zd = zd
self.money -= zd_prize
print(f'{self.name} 购买了一个弹夹,里面有{zd.nums} 颗子弹')
else:
print(f'{self.name} 钱不够')
else:
print("买子弹拿的钱不够")
# 给枪添加弹夹
def get_gan_add_zd(self):
if not self.gan:
print("没有枪")
return False
if not self.zd :
print("没有弹夹")
return False
# 给枪添加弹夹
self.gan.add_zd(self.zd)
print(f'{self.name} 给 {self.gan.name} 增加了一个弹夹 弹夹中有 {self.zd.nums}颗子弹')
# 添加子弹
def add_bullet(self,nums):
if self.zd:
if nums > 0:
self.zd.add_Bullet(nums)
self.money -= nums * 10
else:
print("购买子弹数量有异常")
else:
print("没有弹夹")
# 扣动扳机
def press_the_trigger(self):
if not self.gan:
print("没有枪")
return False
if not self.zd:
print("没有弹夹")
return False
print(f'{self.name}已经扣动扳机了')
self.gan.FireStarter()
'''弹夹'''
class Zd:
def __init__(self,prize):
self.nums = 100
self.prize = prize
def add_Bullet(self,nums):
self.nums += nums
plf = Sb('士兵',20000)
ak47 = plf.buy_gan('AK47',3000)
zd = plf.buy_zd(3000)
plf.get_gan_add_zd()
plf.press_the_trigger()
plf.press_the_trigger()
plf.press_the_trigger()
plf.press_the_trigger()
plf.press_the_trigger()
# 添加子弹
plf.add_bullet(-300)
# print(f"弹夹的数量还有{plf.zd.nums}")
# print(f"弹夹的数量还有{plf.gan.zd.nums}")
python面向对象之练习题2的更多相关文章
- python面向对象之练习题1
定义管理员类,管理员有属性(name,password),可以创建学校.创建课程.创建老师 定义老师类,老师有属性(name,password),可以添加课程.给学生打分,但发现学生没有购买课程时,不 ...
- 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 ...
随机推荐
- mysql错误问题处理
问题1.mysql 黑窗口出现错误 无法启动此应用程序 ,计算机中丢失MSVCP120.DLL,请重新安装 因为是从虚拟机上安装的新的系统,所以dos窗口输入mysql -v的时候出现了上述的错误,之 ...
- ASP.NET Core搭建多层网站架构【4-工作单元和仓储设计】
2020/01/28, ASP.NET Core 3.1, VS2019, Microsoft.EntityFrameworkCore.Relational 3.1.1 摘要:基于ASP.NET Co ...
- Java电子书高清PDF集合免费下载
这份资源是我经过多年积累才整理归类出来,有很多电子书我觉质量还是非常高的,由于电子书太多我也是用业余时间挑着看的,这么多资源自己保存着也是浪费,就想着现在把资源分享出来,希望能真正帮到大家: 资源我都 ...
- 14 用DFT计算线性卷积
用DFT计算线性卷积 两有限长序列之间的卷积 我们知道,两有限长序列之间的卷积可以用圆周卷积代替,假设两有限长序列的长度分别为\(M\)和\(N\),那么卷积后的长度为\(L=M+N-1\),那么用 ...
- DL4J之CNN对今日头条文本分类
一.数据集介绍 数据来源:今日头条客户端 数据格式如下: 6551700932705387022_!_101_!_news_culture_!_京城最值得你来场文化之旅的博物馆_!_保利集团,马未都, ...
- 论文阅读|Focal loss
原文标题:Focal Loss for Dense Object Detection 概要 目标检测主要有两种主流框架,一级检测器(one-stage)和二级检测器(two-stage),一级检测器, ...
- Cosmetic Bottles - Cosmetic Packaging: What Are The Characteristics Of Trends?
There are certain differences in products, of which cosmetics are the most obvious. In addition to t ...
- 「题解」「POJ1322」Chocolate
目录 题目 原题目 简易题意 思路分析 代码 练习题 题目 原题目 点这里 简易题意 包裹里有无限个分布均匀且刚好 \(c\) 种颜色的巧克力,现在要依次拿 \(n\) 个出来放到桌子上.每次如果桌子 ...
- Python:re 模块
re模块是python内置的正则表达式模块
- spring boot properties文件与yaml文件的区别
编写是没有提示的话在pom中添加依赖,如下: <!-- 配置文件处理器 编写配置时会有提示 --> <dependency> <groupId>org.spring ...