首页 > 其他分享 >递归函数和其他拓展

递归函数和其他拓展

时间:2023-09-12 17:33:29浏览次数:28  
标签:return name 递归函数 res 拓展 else 其他 print def

递归函数和其他拓展

课前练习

请实现一个装饰器,把'函数的返回值'+100然后'返回'

def ount(fun):
    def werrod(*ardes,**warrrts):

        res=fun(*ardes,**warrrts)
        return res+100
    return werrod
@ount
def funs(intes):
    return int(intes)
res=funs(100)
print(res)

请实现一个装饰器,通过一次调用使函数重复执行5次

def ount(fun):
    def werrod(*ardes,**warrrts):
        count=0
        while count<5:
            print('输出')
            fun(*ardes,**warrrts)
            count+=1

    return werrod
@ount
def funs():
    print('循环')
funs()

请实现一个装饰器每次调用函数时,将函数名字写入文件中


def ount(fun):
    def werrod(*ardes,**warrrts):
        with open('qw','a',encoding='utf-8')as  f:
            f.write(f'name={fun.__name__}\n')
            fun(*ardes,**warrrts)


    return werrod
@ount
def funs():
    pass
funs()

递归函数

递归:直接或者间接的调用其他函数
def index():
    print('from index')
    func()
def func():
    print('from func')
    index()

func()
递归在实际编码中是不允许出现的,一旦出现了无限递归就会直接报错
1. 递推
        一层一层的往下寻找答案
2. 回溯
        通过最后一个结果往回寻找最开始的那个答案
        
    递归是必须有结束条件!!!!

递归的使用场景

阶乘运算
def dig(fun):
    def inter(ase):
        if ase==0:
            return 1
        else:
            return inter(ase - 1) * ase
    return inter(fun)
print(dig(5))


求第5个人的年龄

def inter(ase):
    if ase == 1:
        return 18

    return inter(ase - 1) +2#每个人的年龄相差为2
res=inter(5)
print(res)

算法二分法

二分法的原理

二分法的原理:
	1. 列表必须先排序(从小到大,从大到小)
	2. 折半查找

思路

一般思路
将列表的元素一个一个的经行比较
然后得出结果
l = [11, 2, 3, 43, 55, 67, 23, 45, 45, 88, 99, 66,]
  for i in l:
        if i == 66:
            print('找到了')
二分法
l=[12,23,124,123,41,24,134,12]
l.sort()
target_num = 200
def my_half(l,target_num):
    if len(l) == 0:
        print('没找到')
        return
    # 3. 取的就是中间的那个索引
    middle_index = len(l) // 2 # 向下取整 5 // 2 == 2  6 // 2 == 3
    if target_num > l[middle_index]:
        l_right = l[middle_index+1:]  #
        print(l_right)
        my_half(l_right, target_num)

    elif target_num < l[middle_index]:
        l_left = l[:middle_index]
        print(l_left)
        my_half(l_left, target_num)
    else:
        print('找到了')

my_half(l, target_num)

三元表达式

对于只有二选一的情况,我们推荐使用三元表达式
	语法结构:
res = 条件成立之后的结果 if 条件 else 条件不成立之后的结果

def my_max(a, b):
    return a if a > b else b
res = my_max(1, 2)
"""还支持嵌套"""
## 不推荐写太多的嵌套,一般两层就够了,超过两层了,建议不这样写,面试的时候:成数非常多
res = 2 if 2 > 10 else ( 10 if False else (100 if 10 > 5 else (2 if False else 1)))
print(res)

列表生成式

names_list = ['kevin', 'jerry', 'tank', 'oscar']
# # 列表生成式
res = [ name + '_SB' for name in names_list]
print(res)
res = [name+'_SB' if name != 'jerry' else name for name in names_list]
print(res)

标签:return,name,递归函数,res,拓展,else,其他,print,def
From: https://www.cnblogs.com/zhangfanshixiaobai/p/17697341.html

相关文章

  • 打开Chrome浏览器总是跳到其他浏览器导航??? 为你解决!!!
     用chrome浏览器把百度设为默认搜索引擎用起来很方便,但有时百度抽风,会自动跳转到百度首页,无限烦恼,发现了一个快速解决的办法,和大家共享我的解决方法:第一步:打开你桌面上谷歌的属性,打开文件所在位置 第二步:在文件夹所在的位置找到Chrome.exe,双击运行一下,如果如转到其他浏览器......
  • 解决导航栏“同进同出”的问题--点击一个导航栏,其他的也会有相同的操作发生
    问题描述导航栏一同受到一个操作的影响;问题解决使用index参数进行解决:注意点:1、index的参数在item后面;2、index参数在遍历时,需要转换成字符串类型;......
  • Python的requests.post函数上传文件和其他数据
    当使用Python的requests.post函数时,可以在其中添加异常处理来捕获可能的网络错误或HTTP错误。以下是一个示例代码,演示如何使用try-except语句来处理requests.post可能抛出的异常:importrequestsurl='http://cbim.com/upload'files={'file1':('file1.txt',open('file1.t......
  • IK分词器的拓展和停用词典
                ......
  • git 本地master分支合并其他分支
    一、切换到主分支gitcheckoutmaster二、主分支合并其他分支gitmergeyf_dev三、切换到其他分支gitcheckoutyf_dev四、推送到远程分支gitpush-uoriginyf_dev......
  • SpringBoot如何让业务Bean优先于其他Bean加载
    本博客原文地址:https://ntopic.cn/p/2023090901/源代码先行:Gitee本文介绍的完整仓库:https://gitee.com/obullxl/ntopic-bootGitHub本文介绍的完整仓库:https://github.com/obullxl/ntopic-boot背景介绍今天走读一个应用程序代码,发现一个有趣的现象:有多个不同的业务Bean中均......
  • SSRF漏洞拓展
    SSRF漏洞拓展目录SSRF漏洞拓展curl_exec函数一、ssrf配合gopher协议反弹shell二、ssrf配合gopher协议写马三、ssrf配合gopher协议ssh免密登录四、ssrf配合dict协议反弹shellcurl_exec函数一、ssrf配合gopher协议反弹shell实验环境:(1)192.168.142.201#redis服务器(2)192.168......
  • 拓展kmp的应用
    Smiling&Weeping----我与月亮,进行了一次深夜谈话它与我谈论太阳,而我与它谈论你。 题目链接:P3435[POI2006]OKR-PeriodsofWords-洛谷|计算机科学教育新生态(luogu.com.cn)思路:其实也就是kmp......
  • 拓展kmp
    Smiling&Weeping----我从不觉得暗恋是苦涩的,对一个人的喜欢藏在眼睛里,透过它,世界都变得更好看了。题目:P5410......
  • python request上传多个文件和其他字段
    使用 requests 库可以方便地上传多个文件和其他字段。当使用Python的requests.post函数时,您可以在其中添加异常处理来捕获可能的网络错误或HTTP错误。 importrequestsurl='http://cbim.com/upload'files={'file1':('file1.txt',open('file1.txt','rb'),'tex......