20201014-python高级函数作业

1、定义一个使用不定长参数的函数,并在函数中打印出参数及其类型,统计传入参数的个数

def test(a,b,*args,c=10,**kwargs):   

    print("a=",a)

    print("b=",b)

    print("args=",args)

    print("c=",c)

    print("kwargs=",kwargs)

    print("参数总长度:",1+1+len(args)+1+len(kwargs))

test(1,2,3,4,5,m=4)


def test(a,b,c=10,*args,**kwargs):    

    print("a=",a)

    print("b=",b)

    print("args=",args)

    print("c=",c)

    print("kwargs=",kwargs)

    print("参数总长度:",1+1+len(args)+1+len(kwargs))

test(1,2,3,4,5,m=4)


2、定义一个函数max,接受的参数类型是数值,最终返回两个数中的最大值

def max(num1,num2):

    if num1>num2:

        return num1

    else:

        return num2

3、定义一个函数min,接受的参数类型是数值,最终返回两个数中的最小值

def min(num1,num2):

    if num1<num2:

        return num1

    else:

        return num2

4、分别定义加减乘除四个函数实现两个数之间的加减乘除操作

# 加法

def add(a,b):

return a+b

# 减法

def sub(a,b):

return a-b

# 乘法

def mul(a,b):

return a*b

# 除法

def div(a,b):

if b==0:

     return 0

else:

     return a/b

5、分别定义加减乘除四个函数,然后实现多个数之间的累加累减累除累乘操作,如[1,2,3,4,5],累加即是1+2+3+4+5,注意当使用除法时,应判断被除数不能为0

#累加

def add(a,b,*args):

    s=a+b

    for i in args:

        s=s+i

    return s

#累减

def sub(a,b,*args):

    s=a-b

    for i in args:

        s=s-i

    return s

#累乘

def mul(a,b,*args):

    s=a*b

    for i in args:

        s=s*i

    return s

#累除

def div(a,b,*args):

    if b==0:

        return a

    else:

        s=a/b

    for i in args:

        if i ==0:

            continue

        else:

            s=a/b

    return s

6、使用不定长参数定义一个函数max_min,接受的参数类型是数值,最终返回这些数中的最大值和最小值——错题

def max_min(*args):

    max=0

    min=0

    if len(args)==0:

        return 0,0

    elif len(args)==1:

        return args[0],args[0]

    else:

        max=args[0]

        min=args[0]

        for i in args:

            if max<i:

                max=i

            if min>i:

                min=i

        return max,min

7、定义一个函数,返回n的阶乘的最后结果,并打印出如5阶乘"5!=120”的效果——错题

def f(n):

    s=1

    for i in range(n):

        s=s*(i+1)

print('%s!=%s' %(n,s)) 

f(5)

8、定义一个函数,返回由n(包含n)以内的奇数或者偶数组成的列表,默认返回全是奇数的列表

def f(n,type='j'):

    ls=[]

 if type=='j':

 for i in range(1,n+1):

 if i%2==1:

                ls.append(i)

 if type=='o':

 for i in range(1,n+1):

 if i%2==0:

                ls.append(i)

 return ls

9、定义一个函数,打印出n以内的所有的素数(指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。)——错题

def f(n):

    ls=[2]

    for i in range(3,n):

        for j in range(2,i):

            if i%j == 0:

                break

        else:

            ls.append(i)

    print(ls)

10、定义一个函数,接受三个参数,分别为字符串s、数值a1、数值a2,将字符串s从下标a1开始的a2个字符删除,并把结果返回,a2默认值为0——错题

def cut_str(s,a1,a2=0):

    length = len(s)

    if a1+1>length or a2 == 0:

        return s

    else:

        s1 = s[:a1]

        s2 = s[a1+a2:]

        return s1+s2

print(cut_str("hello",6,1))

11、请定义两个函数,一个函数画正方形,一个函数画三角形,并且可以从键盘输入值来决定画正方形还是画三角形以及决定是否退出程序

我的答案:

import turtle

def z():

    for i in range(4):

        turtle.fd(20)

        turtle.right(90)

def s():

    for i in range(3):

        turtle.fd(20)

        turtle.right(120)

m=input('请输入值,z画正方形,s画三角形,其它任意键退出程序:')

if m =='z':

    z()

elif m=='s':

    s()

else:

    print('退出程序')

官方答案:

def square(n):

    for i in range(n):

        print("*"*n)

def triangle(n):

    for i in range(n):

        print("*"*(i+1))

12、定义函数findall,实现对字符串find方法的进一步封装,要求返回符合要求的所有位置的起始下标,如字符串"helloworldhellopythonhelloc++hellojava",需要找出里面所有的"hello"的位置,最后将返回一个元组(0,10,21,29),即将h的下标全部返回出来,而find方法只能返回第一个——没懂

def findall(string, s):

    ret = []

    if s=='':

        return ret

    while True:

        index = string.find(s)

        if index != -1:

            if len(ret)!=0:

                ret.append(ret[-1]+index+len(s))

            else:

                ret.append(index)

            string = string[index+len(s):]

        else:

            break

    return ret

print(findall("abc-abc-abc-","-"))

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。