• 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('{}攻击了{},{}掉了{}血
    {}还剩{}血量'.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滴血
  • 相关阅读:
    24. Swap Nodes in Pairs
    23. Merge k Sorted Lists
    shell脚本报错:"[: =: unary operator expected"
    一种用 数组元素 指定 所调函数 的方法
    阻塞 非阻塞
    Linux open() 一个函数,两个函数原型
    QT 执行windows cmd 命令并读取结果
    Qt5 escape spaces in path
    获取磁盘的 总容量,空余容量,已用容量 【windows】
    通过进程名称,获取其路径
  • 原文地址:https://www.cnblogs.com/2584808136-qq-com/p/12902130.html
Copyright © 2020-2023  润新知