Python课程第八天作业
第一题:
1.自定义一个 Fruit 类:该类有一个 类属性: identify:值为"水果",有两个对象属性: name,price:值由实例化对象时赋值,一个类方法: get_identify:打印类属性identify的值,一个对象方法:get_total_price(num):打印『%s个%s值%s钱』,一个静态方法:packing(*fruits)
静态方法(装箱)的思路分析
red_apple = Fruit("红苹果", 10)
green_apple = Fruit("青苹果", 10)
yellow_banana = Fruit("黄香蕉", 8)
调用:Frulit.packing(red_apple, green_apple, yellow_banana) 打印:一箱装了2个苹果1个香蕉
示例代码:
#!/usr/bin/env python
# -*- coding: utf- -*- class Fruit:
identify = '水果' def __init__(self,name,price):
self.name = name
self.price = price @classmethod
def get_identify(cls):
print(cls.identify) def get_total_price(self,num):
total_price = self.price * num
print('%s个%s值%s钱' % (num, self.name, total_price)) @staticmethod
def packing(*fruits):
fruit_type=[]
for i in fruits:
if "苹果" in i.name:
fruit_type.append("苹果")
if "香蕉" in i.name:
fruit_type.append("香蕉")
print('总共装箱数量为:')
for k in set(fruit_type):
print("%d个%s"%(fruit_type.count(k),k)) red_apple = Fruit("红苹果", )
green_apple = Fruit("青苹果", )
yellow_banana = Fruit("黄香蕉", )
black_banana = Fruit("泰国香蕉",)
Fruit.packing(red_apple,green_apple,yellow_banana,black_banana)
第二题:
-- 对name属性进行封装,但是外界任然可以访问name以及设置name
-- 有一个方法属性bmi(标准体重),可以获取一个人的bmi,bmi只读不可写,bmi计算规则
-- 男:(身高cm-80)× 70﹪ | 女:(身高cm-70)× 60﹪ 提示:类属性就是直接写在类中的变量,对象属性就是写在__init__方法中的用self.属性 = 值 赋值的属性,方法属性就是用 @property 修饰的方法伪装成的属性
示例代码:
class Person:
def __init__(self, name, weight, height, sex):
self.name = name
self.weight = weight
self.height = height
self.sex = sex @property
def bmi(self):
if self.sex == '男':
return (self.height -) * 0.7
return (self.height - ) * 0.6 tom=Person('tom',,,'男')
print("%s 标准体重为 %.2f" %(tom.name,tom.bmi))
marry=Person('marry',,,'女')
print("%s 标准体重为 %.2f" %(marry.name,marry.bmi))
第三题:
用面向对象实现 植物大战僵尸游戏 1.定义一个僵尸Zombie类,该类可以实例化出多种僵尸对象,僵尸对象产生默认都有 名字name、血量HP、防具armor
-- 名字:普通僵尸 | 路障僵尸 | 铁桶僵尸
-- 血量:默认就是100,不需要外界提供
-- 防具:不需要外界提供,从名字中分析确定,防具的值是一个列表,从名字分析得到
-- ['无', 0] | ['路障', 5] | ['铁桶', 15] => [防具名, 防具的防御值]
-- 通过@property的getter、setter方式,对外提供防具的两个访问接口armor_name与armor_count
-- armor_name可以取值、赋值、删除值:通过一个
-- eg: 普通僵尸对象.armor_name = '铁桶',不仅改变了防具名
-- 普通僵尸对象的名字name也会变成 铁桶僵尸
-- armor_count只可以取值 2.定义一个角色User类,该类有名字name属性、以及打僵尸的beat方法
-- 名字:随意自定义
-- beat:该方法需要传入一个僵尸对象
-- 在方法内部可以实现:某某用户攻击了某某个僵尸,僵尸损失多少血,还剩多少血
-- 每一次攻击,都固定扣除25滴血,但是不同的僵尸会被防具相应抵消掉一定的伤害值
-- 循环攻击僵尸,3s攻击一次,僵尸被击杀后,打印 某某用户击杀了某某个僵尸 并结束方法 3.定义一个Game类,该类有一个name属性,属性值为 "植物大战僵尸" ,该类中有一个start方法,通过Game.start()来启动游戏
-- 游戏一开始先显示游戏的名字 植物大战僵尸游戏
-- 会随机产生三种僵尸,总共产生三个作为要被击杀的对象
-- 生成一个有角色名的角色,依次去击杀随机产生的每一只僵尸
-- 开始击杀第一只僵尸 => 某某用户攻击了某某个僵尸,僵尸损失多少血,还剩多少血 => 某某用户击杀了某某个僵尸 => 第一只僵尸已被击杀完毕 => 开始击杀第二只僵尸 ... => 第三只僵尸已被击杀完毕
示例代码:
import time
import random class Zombie:
def __init__(self, name):
self.armor_type = {'普通僵尸': , '路障僵尸': , '铁桶僵尸': }
self.__name = name
self.HP =
self.armor = self.armor_type[self.__name] @property
def armor_name(self):
return self.armor, self.__name @armor_name.setter
def armor_name(self, value):
self.__name = value
self.armor = self.armor_type[value] @property
def armor_count(self):
return self.armor class User:
def __init__(self, name):
self.name = name def beat(self, zombie):
while True:
time.sleep()
lose_blood = - zombie.armor_count
if zombie.HP <= lose_blood:
print('%s击杀了%s' % (self.name, zombie.armor_name[]))
break
zombie.HP -= lose_blood
print('%s攻击了%s,%s损失了%s滴血,还是剩%s滴血' % (
self.name, zombie.armor_name[], zombie.armor_name[], lose_blood, zombie.HP)) class Game:
name = "植物大战僵尸" @classmethod
def start(self):
print('%s游戏' % self.name)
zombie_list = ['普通僵尸', '路障僵尸', '铁桶僵尸']
count =
while count < :
count +=
#zombie_type = zombie_list[random.randint(, ) % ]
zombie_type = random.choice(zombie_list)
zombie_name = Zombie(zombie_type)
print('开始击杀第%s次僵尸' % (count))
CJK = User('苍井空')
CJK.beat(zombie_name) Game.start()
Python课程第八天作业的更多相关文章
- python课程第一天作业1-模拟登录
第一周作业: 作业1:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 流程图: 代码:后来修改过一次: #!/usr/bin/env python # -*-conding:ut ...
- Python课程第二天作业
一.统计字符串格式 要求: # 1.统计元组中所有数据属于字符串的个数,提示: isinstance() # 数据: t1 = (1, 2, '3', '4', 5, '6') # 结果: 3 代码 ...
- Python课程第一天作业
一.第一题:简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型? 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的 ...
- C#基础第八天-作业答案-设计类-面向对象方式实现两个帐户之间转账
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- C#基础第八天-作业-设计类-面向对象方式实现两个帐户之间转账
要求1:完成以下两种账户类型的编码.银行的客户分为两大类:储蓄账户(SavingAccount)和信用账户(CreditAccount),两种的账户类型的区别在于:储蓄账户不允许透支,而信用账户可以透 ...
- 2003031121-浦娟-python数据分析五一假期作业
项目 内容 课程班级博客链接 20级数据班(本) 这个作业要求链接 Python作业 博客名称 2003031121-浦娟-python数据分析五一假期作业 要求 每道题要有题目,代码(使用插入代码, ...
- 2003031121-浦娟-python数据分析第四周作业-第二次作业
项目 内容 课程班级博客链接 20级数据班(本) 作业链接 Python第四周作业第二次作业 博客名称 2003031121-浦娟-python数据分析第四周作业-matolotlib的应用 要求 每 ...
- python课程第二周重点记录
python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...
- 与左侧的 圆括号“(”(位于“e:\大二上课程课件、作业和答案\数据结构\chapter4\sqstack\sqstack\mysqstack.h(23)”)匹配之前遇到文件结束
错误原因是“某对圆括号只打了左括号而没有右括号”,debug方法是:直接根据报错提示:“与左侧的 圆括号“(”(位于“e:\大二上课程课件.作业和答案\数据结构\chapter4\sqstack\sq ...
随机推荐
- C# 获取社会统一信用代码
时间不多,废话少说: 网络请求代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...
- jQuery-对列表的操作
主要是通过对dom元素的增加和删除实现对数据增加和删除 <!DOCTYPE html> <html lang="en"> <head> < ...
- 别忘了在使用MES系统之前,还有关键一步!
如果你是不熟悉工业自动化领域的专业人士,又或者是从IT或其他背景进入到操作技术(OT)领域的相关人士,那么我相信你不会后悔读到这篇文章. 我们都想做到智能化生产,想将MES系统,APS系统应用到生产过 ...
- JS高阶---H5之Web Workers多线程
大纲: 主体: (1)介绍 (2)案例 编程实现斐波那契数列的计算 递归调用实现案例: Web Workers多线程的新标准并没有改变JS单线程的本质,分离出的子线程完全受主线程控制,且不得操作DOM ...
- HTTP 2.0 之压测工具 Jmeter
年后,德国总部工业平台要做中国本地化,德国的同事过来给我们展示日志的时候,无意间看到了他们应用日志里的 HTTP/2,下意识到,原来他们都已经提供Http 2.0的服务了. 那么问题来了,除了h2lo ...
- 201871010123-吴丽丽《面向对象程序设计(Java)》第十五周学习总结
201871010123-吴丽丽<面向对象程序设计(Java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201871010121-王方-《面向对象程序开发设计java》第十四周实验总结
4 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/ ...
- 《快活帮》第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十一 团队作业7-团队项目设计完善&编码 团队名称 快活帮 作业学习目标 掌握 ...
- vs解决方案文件出错
问题描述: 电脑死机,重启电脑后打开解决方案,提示“选择的文件不是有效的解决方案文件” 解决方案: 1. 先用记事本打开这个解决方案查看下,发现其中内容变成空白了? 2. 打开项目中的xxxx.vcx ...
- java第三讲课后动手动脑及代码编写
1. 类就是类型,对象就是这种类型的实例,也就是例子.类是抽象的东西,对象是某种类的实实在在的例子.例如:车是一个类,汽车,自行车就是他的对象. 对象的定义方法? (1)对象声明:类名 对象名: (2 ...