函数作业

1、写一个函数,接收n个数字,求解这n个数字的和

1 def get(*args):
2     j=0
3     for i in args:
4         j=i+j
5     return(j)
6 print(get(1,2,3))

 2、读代码、回答代码中打印出来的值a,b,c分别是什么,为什么?

技巧:一般情况下代码的执行顺序是从上往下执行,一点问题没有,但是有两个意外,一个是while循环另一个就是函数,所以一定要注意函数的执行顺序
a=10
b=20
def func(a,b):#这里的a,b是形参和第5行代码中的实参a,b没有任何关系
    print(a,b)#从第五行得到的参数在这里得到执行
c=func(b,a)#第一次读到这里时候,是把括号里面的两个参数提出来然后交给第四行代码。第二次代码读到这里,由于前面的代码没有return,所以c不能接收到func(a,b)运行的结果,所以下面的print(c)结果是none
print(c)
#上面这段代码按照行号的执行顺序是:1>2>3>5>4>5>6


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
20 10
None

Process finished with exit code 0
再加上一个技巧:注意没有return,就意味着返回值是none
加上return
a=10
b=20
def func(a,b):
    print(a,b)#从第五行得到的参数在这里得到执行
    return a,b
c=func(b,a)#第一次读到这里时候,是把括号里面的两个参数提出来然后交给第四行代码。第二次代码读到这里,由于前面的代码有return,所以c接收到func(a,b)运行的结果,所以下面的print(c)结果是一个元组
print(c)
#上面这段代码按照行号的执行顺序是:1>2>3>5>4>5>6


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/14.py
20 10
(20, 10)

Process finished with exit code 0

3、读代码、回答代码中打印出来的值a,b,c分别是什么,为什么?

a=10
b=20
def func(a,b):
    a=3#这里由第7行的位置参数,变成关键字参数
    b=5
    print(a,b)
c=func(b,a)#同样这里没有return,默认返回值是none
print(c)
#代码执行顺序:1>2>3>6>4>5>6>7


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/14.py
3 5
None

Process finished with exit code 0

 4、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者

自己的答案1,

l=[]
def func(*args):
    j=0
    for i in args:
        j=j+1
        if j%2==0:
            pass
        else:
            l.append(i)
    return i
func(1,2,3,4,5)
print(l)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/14.py
[1, 3, 5]

Process finished with exit code 0

自己做的方法2,这个方法能够满足题目的意思

l=[]
def func(*args):
    for i in args[0]:
        if args[0].index(i)%2==0:
            pass
        else:
            l.append(i)
func((1,2,3,4,5))
print(l)

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/14.py
[2, 4]

Process finished with exit code 0

老师的方法,直接用切片,很精妙

def func(l):
    return(l[1::2])#直接用切片
print(func((1,2,3,4)))

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/14.py
(2, 4)

Process finished with exit code 0

5、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5.

自己的答案

def func(l):
    if len(l)>=5:
        print('false')
    else:
        print('true')
func('zxcd')


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/14.py
true

Process finished with exit code 0

老师的答案

def func(l):
    return len(l)>=5
print(func('abcd5'))

注意技巧:再函数中一定要慎用print,提倡使用return,因为使用return后,后面的代码还可以套用结果继续执行,但是使用print后就不能套用代码的结果了

6、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

自己的代码

def func(l):
    return l[0:2]
print(func((0,1)))

7、写函数,计算传入字符串中数字、字母、空格以及其他的个数,并返回结果。

def func(s):
    dic={'num':0,'alpha':0,'space':0,'other':0}
    for i in s:
        if i.isdigit():
            dic['num']+=1
        elif i.isalpha():
            dic['alpha']+= 1
        elif i.isspace():
            dic['space']+= 1
        else:
            dic['other']+= 1
    return dic
print(func('djljlj+ disfsph'))

8、写函数、检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。

def func(s):
    if type(s) is str and s:#当参数是字符串,这里and s的意思是且这个s字符串不为空
        for i in s:
            if i=='':
                return True
    elif s and type(s) is list or type(s) is tuple:#当参数是列表或者元组
        for i in s:
            if not i:
                return True
    elif not s:#或者这个字符串、列表或者元组本身就为空
        return True
print(func([1,'',1]))

 9、写函数,检查传入字典的每一个value,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

dic={'k1':[1,2,3],'k2':'kxcv'}
def func(dic):
    for k in dic:#遍历字典中的每一个键
        if len(dic[k])>2:
            dic[k]=dic[k][:2]
    return dic
print(func(dic))


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/14.py
{'k1': [1, 2], 'k2': 'kx'}

Process finished with exit code 0

10、写函数,接收两个数字参数,返回比较大的那个数字

自己的做法:

def func(a,b):
    return max(a,b)
print(func(1,2))

老师的做法1:

def func(a,b):
    if a>b:
        return a
    else:
        return b
print(func(1,2))

老师的做法这里引出一个新的知识点:三元运算符

a=1
b=5
c=a if a>b else b#这就是三元运算符
print(c)

三元运算符的结构:变量=条件返回True的结果 if 条件 else 条件返回False的结果
适用条件:
必须要有结果
必须要有if和else
只能是简单的情况

三元运算符的目的是为了是代码更为简单

运用三元运算符来修改代码

def func(a,b):
     return a if a>b else bprint(func(1,2))

 

 

 

 

 

 

posted @ 2019-01-17 20:54  舒畅123  阅读(135)  评论(0编辑  收藏  举报