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)

 四、人狗大战

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滴血

猜你喜欢

转载自www.cnblogs.com/2584808136-qq-com/p/12902130.html