python小白自学基础知识(二)

1.计算列表内数字的累加和
这里用到functools模块,以及该模块下的reduce函数
语法:reduce(function1,list1)
注:function1是自己定义的函数名,list1也是自己定义的列表名(不局限于这两个,完全自己定义)

#导入自己需要的模块
import functools
list1 = [1,3,6,8,8]
#定义函数方法
#这里方法只需要包含两个参数即可
def func(a,b):return a + b
result = functools.reduce(func,list1)
print(result)

2.面向对象相关知识(类)
类→对象→方法
1.类是对一系列具有相同特征和行为的事物的总称
2.特征即是属性
3.行为即是方法
4.自定义变量名m=类名称()#类生成实例对象m
5.如果在为类定义一个方法时,比如 def m (self): self在我的理解就是:如果类生成了实例化对象,那self就代表实例对象自己
6.init:(魔法方法)生成类的实例时仅被调用一次

根据函数和面向对象(类)的知识,概括为一个总的例子(该例子我在其他的文章中见过),作为上课的内容,老师要求实现人狗大战游戏代码编写,内容中包含:人初始化的金钱额度,金钱用于买枪,枪对狗的伤害,以及狗的血量,最后是人在多少次把狗打死(其中没有涉及到人打狗的同时,狗也在咬人,但是却定义了狗对人的伤害,有兴趣的朋友可以继续把游戏做下去)

人狗大战游戏

#创建一个类(该类的属性会为后面的类继承调用)
class lable:def __init__(self, name, aggr, hp):  #类属性self.name = nameself.aggr = aggrself.hp = hpclass dog(lable):  #创建狗的类,并且继承lable(父类)的属性def __init__(self, name, aggr, hp, kind):lable.__init__(self, name, aggr, hp)self.kind = kind#定义狗的攻击方法def attack(self, person):#人的血等于人当前的血量减去狗的攻击力person.hp -= self.aggrclass person(lable): #创建人的类,同样继承lable(父类)的属性def __init__(self, name, aggr, hp, sex):lable.__init__(self, name, aggr, hp)self.sex = sex#初始化人的钱为0self.money = 0#定义人的攻击方法,参数对象是狗def person_attack(self, dog):#狗的血量等于狗当前的血量减去人的攻击力dog.hp -= self.aggr#定义人买枪的方法def person_gun(self, gun):  if self.money >= gun.g_price:#如果钱够就买枪self.money -= gun.g_priceself.gun = gun#枪的攻击力赋值与人的攻击力self.aggr = gun.g_aggrelse:print('余额不足,请充值金额打狗!')class gun:  #创建gun枪的类#类属性 记录子弹数量,初始化为0num_bullet = 0def __init__(self, name, aggr, zds, price):self.g_name = nameself.g_aggr = aggrself.g_zds = zdsself.g_price = pricedef hand_w(self,dog):#定义人开枪的方法while self.g_zds > 0:#保证子弹数一直是正数if dog.hp > 0:#人用枪打狗,伤害为枪伤害的二倍dog.hp -= self.g_aggr * 2self.g_zds -= 1gun.num_bullet += 1print('正在使用武器攻击(伤害为{}的二倍)!'.format(self.g_aggr))print('当前{}的血条为{}'.format(dog.name,dog.hp))else:  # 防止程序陷入死循环break
#创建实例对象
zangao = dog('zangao', 100, 200, '咬人')
tom = person('tom', 50, 10, '打狗')
m4a1 = gun('m4-a1', 20, 3, 500)
tom.money += 1000
#假想藏獒不攻击人类,只有人类用枪打狗的过程
# 构造一个循环体,当[zangao]的hp<=0时,退出循环
# 固定子弹数量
bullet_full = m4a1.g_zds
while zangao.hp > 0:# 使用gun攻击# 判断tom是否还有钱购买枪攻击zangao,如果没有终止循环while tom.money >= m4a1.g_price:# 购买武器tom.person_gun(m4a1)# 我们需要重置一下子弹的数量m4a1.g_zds = 3# 使用武器攻击(hand_w方法自带判断,这里不用加判断了)m4a1.hand_w(zangao)#输出消耗打狗的总子弹数
print('使用子弹数量为[%d]' % gun.num_bullet)

(这个小例子重点在掌握面向对象的继承,还有定义函数的方法,以及一些逻辑关系,程序里没有实现让狗攻击人,然后人在攻击狗,完全就是单纯的人打狗。至于函数内定义的狗的攻击力,可以作为是为了学习面相对象的继承。一起加油呀!)

python小白自学基础知识(二)附加(人狗大战游戏)相关推荐

  1. python人狗大战游戏_day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

  2. python人狗大战游戏_python面向对象-----组合的题目 定一个人狗大战 并且用面向对象的组合知识...

    定一个人狗大战  并且用面向对象的组合知识 class Person(object): def __init__(self, name, sex, hp, ad): self.name = name ...

  3. python人狗大战游戏_python面向对象-----gt;组合的题目 定一个人狗大战 并且用面向对象的组合知识 - - ITeye博客...

    定一个人狗大战  并且用面向对象的组合知识 class Person(object): def __init__(self, name, sex, hp, ad): self.name = name ...

  4. Python 小白入门基础知识(6)-print(打印99乘法表)

    今天是中考第三天,祝莘莘学子不忘初心.学业有成. 今天一起学习做道题目,就是在屏幕上打印99乘法表.效果如下: 一.题目分析 该题一共有9行,所以我们可不可以用上次用过的print函数直接打印呢.当然 ...

  5. python人狗大战游戏_day23 python学习 类 人狗大战

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 面向过程 优点是:极大的降低了 ...

  6. python人狗大战游戏_082 实例 人狗大战

    定义一个狗类 class Dog: type_dog = '藏獒' # 对象生成的属性-->通过__init__方法 def __init__(self,name,aggressivity,hp ...

  7. python人狗大战游戏_python入门教程NO.10「奇异博士大战灭霸」游戏,面向对象编程实战...

    奇异博士大战灭霸 灭霸为了减轻宇宙的负担,开始了他的救(mie)世(shi)计划,并最终成功的集齐所有宝石,用无限手套随机杀死了宇宙的一半人. 现在给你一个回到过去的机会,请你帮助奇异博士守住无限宝石 ...

  8. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  9. python适合零基础的人吗_学Python需要什么基础知识?零基础可以学Python吗?

    学Python需要什么基础知识?一般来说,想要学Python最好具备一定的计算机专业知识,尤其是数学和英语不错的话,对学Python也有一定的帮助.但是零基础的学习者就不能学Python了吗?当然不是 ...

最新文章

  1. Cacti部署及常用插件安装(2)
  2. pymysql连接mysql_python使用MYSQL数据库
  3. 玩点创意编程,发现另一个世界
  4. Linux 下的/usr/bin /usr/sbin /usr/local/bin /usr/local/sbin区别
  5. Python 2 退休
  6. 再看产业地图及《中国2010-2011产业地图》书评
  7. 力扣55. 跳跃游戏(JavaScript)
  8. Diango 框架起步
  9. JAVA远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
  10. Nginx取消泛解析
  11. python缩进的描述_Python编程思想(2):Python主要特性、命名规则与代码缩进
  12. Oracle数据库 - 安装教程
  13. 安装SQL 2016的时候 Microsoft R Open 和 Microsoft R Server 安装文件的位置
  14. 微软拼音输入法 设置双拼 及全双拼切换
  15. 计算机网络笔记2 应用层
  16. 网盘上传文件服务器失败原因,百度网盘上传文件一直失败是什么情况?具体解决方法...
  17. emc re 整改 超标_EMC测试及整改对策.ppt
  18. 完美解决iphone连电脑蓝牙出现bluetooth外围设备无法正确安装
  19. 老李的RT-THREAD学习05--线程
  20. MAX30102血氧模块检测心率和血氧

热门文章

  1. TennisWorld
  2. matlab三相短路电流计算程序_电力系统三相短路计算地MATLAB代码
  3. 视频教程-华为HCNP网络工程师【从入门到精通】自学视频[肖哥] ¥499-华为认证
  4. 【一起学UniGUI】--UniGUI的界面与程序架构(4)
  5. 精通matlab神经网络.pdf,精通MATLAB神经网络 (朱凯、王正林) PDF_人工智能教程...
  6. 一加5android,一加5/一加5T迎来Android10操作系统升级
  7. UR机械臂学习(6):使用robotiq二指夹爪
  8. Java ASCLL编码表
  9. php工程导致系统蓝屏,win10莫名其妙蓝屏怎么解决
  10. 自动控制系统和计算机控制系统的关系,自动控制系统.ppt