一、写函数计算传入字符串中【数字】、【字母】、【空格】、【其他】的个数,并返回结果。
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)
四、人狗大战
def Person(name,blood,aggr,sex):#建模
person = {
"name":name,
'blood':blood,#血量
'aggr':aggr,#攻击力
'sex':sex,
}
def attack(dog):
dog['blood'] -= person['aggr']
print('{}攻击了{},{}掉了{}血
{}还剩{}血量'.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('{}咬了{},{}掉了{}血
{}还剩{}滴血'.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滴血