赞
踩
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 = name self.aggr = aggr self.hp = hp class 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.aggr class person(lable): #创建人的类,同样继承lable(父类)的属性 def __init__(self, name, aggr, hp, sex): lable.__init__(self, name, aggr, hp) self.sex = sex #初始化人的钱为0 self.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_price self.gun = gun #枪的攻击力赋值与人的攻击力 self.aggr = gun.g_aggr else: print('余额不足,请充值金额打狗!') class gun: #创建gun枪的类 #类属性 记录子弹数量,初始化为0 num_bullet = 0 def __init__(self, name, aggr, zds, price): self.g_name = name self.g_aggr = aggr self.g_zds = zds self.g_price = price def hand_w(self,dog): #定义人开枪的方法 while self.g_zds > 0:#保证子弹数一直是正数 if dog.hp > 0: #人用枪打狗,伤害为枪伤害的二倍 dog.hp -= self.g_aggr * 2 self.g_zds -= 1 gun.num_bullet += 1 print('正在使用武器攻击(伤害为{}的二倍)!'.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)
(这个小例子重点在掌握面向对象的继承,还有定义函数的方法,以及一些逻辑关系,程序里没有实现让狗攻击人,然后人在攻击狗,完全就是单纯的人打狗。至于函数内定义的狗的攻击力,可以作为是为了学习面相对象的继承。一起加油呀!)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。