zoukankan      html  css  js  c++  java
  • 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滴血
  • 相关阅读:
    记一次文件上传远程服务器问题
    Python模块——loguru日志模块简单学习
    Python使用百度地图API根据地名获取相应经纬度
    Python用正则表达式匹配汉字
    【工具】下载与使用(感谢博友)
    【umask】安装产品,脚本中创建目录后注意刷权限
    【凝聚】引荐优笔
    【解决办法1】centos75 No manual entry for XXXX in section X
    【填坑1】CentOS7 systemctrl管理的服务,open files的神坑
    错题记录(二)
  • 原文地址:https://www.cnblogs.com/2584808136-qq-com/p/12902130.html
Copyright © 2011-2022 走看看