python应用----函数
一、写函数计算传入字符串中【数字】、【字母】、【空格】、【其他】的个数,并返回结果。
def count(s): dic = {'数字':0,'字母':0,'空格':0,'其他':0} for i in s: if i.isdigit(): dic['数字'] +=1 elif i.isalpha(): dic['字母'] += 1 elif i.isspace(): dic['空格'] += 1 else: dic['其他'] += 1 return dic l = '12 12 wdssd 33 ***** $$$' print(count(l))#{'数字': 6, '字母': 5, '空格': 7, '其他': 8}
二、写函数,用户传入修改的文件名,与要修改的内容,
执行函数,完成整个文件的批量修改操作
#写函数,用户传入修改的文件名,与要修改的内容, #执行函数,完成整个文件的批量修改操作 def func(filename,old,new): with open(filename,'r',encoding='utf-8')as f,open('%s.bak'%filename,'w',encoding='utf-8')as f2: for line in f: line = line.replace(old,new) f2.write(line) import os os.remove(filename)#删除文件 os.replace('%s.bak'%filename,filename)#重命名文件 func('雪花','小白','xiaobai')
三、装饰器
#装饰器作用:若不想修改函数的调用方式 但是还想再原来函数前后添加功能 #timer就是一个装饰器函数,只是对一个函数有一些装饰作用 import time def timer(f): def inner(*args,**kwargs): #*args、**kwargs:动态参数 start = time.time() time.sleep(0.01) ret = f(*args,**kwargs) end = time.time() print(end - start) return ret return inner @timer #语法糖 @装饰器函数名 def func(a,b): #被装饰函数 print('5.16',a,b) return '2020' @timer def func1(a): #被装饰函数 print('18.03',a) return '2020' # func = timer(func) ret1 = func('星期六','[5,16]') ret2 = func1(00) print(ret1,ret2)
![](https://img2020.cnblogs.com/blog/2007743/202005/2007743-20200516181635348-369644477.png)
四、人狗大战
def Person(name,blood,aggr,sex):#建模 person = { "name":name, 'blood':blood,#血量 'aggr':aggr,#攻击力 'sex':sex, } def attack(dog): dog['blood'] -= person['aggr'] print('{}攻击了{},{}掉了{}血\n{}还剩{}血量'.format(person['name'],dog['name'],dog['name'],person['aggr'],dog['name'],dog['blood'])) person['attack'] = attack return person def Dog(name,blood,aggr,kind): dog = { "name" : name, 'blood':blood, 'aggr':aggr, 'kind':kind#品种 } def bite(person): person["blood"] -= dog['aggr'] print('{}咬了{},{}掉了{}血\n{}还剩{}滴血'.format(dog['name'],person['name'],person['name'],dog['aggr'],person['name'],person['blood'])) dog['bite'] = bite return dog people_1 = Person('大白',1000,50,'woman') people_2 = Person('哪吒',500,100,'man') dog_1 = Dog('二哈',200,2,'2ha') dog_2 = Dog('小白',400,20,'拉布拉多') print(people_1) print(dog_1) people_1['attack'](dog_2) dog_1['bite'](people_2) #{'name': '大白', 'blood': 1000, 'aggr': 50, 'sex': 'woman', 'attack': <function Person.<locals>.attack at 0x0000022A514D7DC0>} #{'name': '二哈', 'blood': 200, 'aggr': 2, 'kind': '2ha', 'bite': <function Dog.<locals>.bite at 0x0000022A514D7E50>} #大白攻击了小白,小白掉了50血 #小白还剩350血量 #二哈咬了哪吒,哪吒掉了2血 #哪吒还剩498滴血