day19

第三次作业:

对函数,内置函数的用法,递归,程序运行顺序的考试

1.列举布尔值为False的值

  0 False ‘’ [] ()  {}  None

2.写函数:

根据范围获取其中3或7整除的所有数的和,并返回调用者:

符合条件的数字个数以及符合条件的数字总和,如:def func(start,end):

def func(start,end):
    res=0
    sum=0
    while start<=end:
        if start%3==0 or start%7==0:
            res+=1
            sum+=start
        start+=1
    return res,sum

t=func(3,7)
print(t)        #(3,16)

 

def func(start,end,res=0, sum=0):
    if start%3==0 or start%7==0:
        res+=1
        sum+=start
    if start==end:
        return res,sum
    ret=func(start+1,end,res,sum)
    return ret


t=func(3,7)
print(t)        #(3,16)

3.函数的默认返回值是None

4.简述break/continue/return的区别

  break:结束当前循环

  continue:结束本次循环进入下一次循环

  return:结束函数,并返回结果,默认为None

5.函数传递参数时,是引用还是复制值?并证明         引用(是否为同一个内存地址)

name='sanxi'
def func():
    print(id(name))
print(id(name))
func()
# 34532704
# 34532704

6.简述三元运算书写格式及应用场景

  变量=值一  if  条件一  else  值二

  将简单的条件判断精简写

7.简述lambda表达式书写格式

  函数名=lambda 形参:功能

  将简单的函数书写为匿名函数,减少代码

8.使用set集合获取两个列表l1=[11,22,33],l2=[22,33,44]中相同的元素集合

   

l1=[11,22,33]
l2=[22,33,44]
print(set(l1)&set(l2))

9.定义函数统计一个字符串中大写字母,小写字母,数字的个数,并以字典为结果返回给调用者

def func(str):
    dic={}
    count_num=0
    count_cap=0
    count_low=0
    for i in str:
        if i.isdigit():
            count_num +=1
        elif i.isupper():
            count_cap+=1
        elif i.islower():
            count_low+=1
    dic['数字']=count_num
    dic['大写字母']=count_cap
    dic['小写字母']=count_low
    return dic

print(func('sss'))

10.简述函数的位置参数,关键字参数,默认参数,可变长参数的特点以及注意事项

  位置参数:按形参的位置传入叫位置参数,就是普通参数

  关键字参数:传入实参时指定形参的值

  默认参数:形参直接指定默认值的参数

  可变长参数:*args**kwargs,前者只能接收没有位置参数的实参或传入的列表、元组,

后者可以接收关键字参数,和字典格式

11.输出结果

  

def func(a):
    return a+100

func=lambda a:a+200
ret=func(10)
print(ret)              #210

23.将字符串‘三夕’转换成utf-8编码的字节类型

  要转换成字节必须指明编码方式

s='三夕'
print(s.encode('utf-8'))
print(bytes(s,'utf-8'))
# b'\xe4\xb8\x89\xe5\xa4\x95'
# b'\xe4\xb8\x89\xe5\xa4\x95'

26.利用内置函数zip(),实现功能

l1=['alex',22,33]  l2=['is',22,33]

l3=['good',22,33]  l4=['guy',22,33]

请获取字符串s='alex_is_good_guy'

l1=['alex',22,33]
l2=['is',22,33]
l3=['good',22,33]
l4=['guy',22,33]
print('_'.join(list(zip(l1,l2,l3,l4))[0]))
print(zip(l1,l2,l3,l4))

# alex_is_good_guy
# <zip object at 0x00B64508>

27.只有调用了函数才会执行函数

  函数可以当做参数传递

 name='sanxi'
def func():
   name = "seven"
   def outer():
       name = "eric"
       def inner():
           global name
           name = "蒙逼了吧..."
       print(name)
   print(name)

ret=func()
print(ret)
print(name)

# seven
# None
# sanxi

 

name = "root"
def func():
   name = "seven"

   def outer():
       name = "eric"
       def inner():
           global name
           name = "蒙逼了吧..."
       print(name)
   o = outer()
   print(o)
   print(name)

ret = func()
print(ret)
print(name)

# eric
# None
# seven
# None
# root

 

global关键字用来在函数或其他局部作用域中使用全局变量

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量

name = "root"
def func():
    name = "seven"
    def outer():
        name = "eric"
        def inner():
            nonlocal name
            name = "蒙逼了吧..."
        inner()
        print(name)
    o = outer()
    print(o)
    print(name)

ret = func()
print(ret)
print(name)


# 蒙逼了吧...
# # None
# # seven
# # None
# # root

28.

name='alex'
def outer(func):
    name='sanxi'
    func()
def show():
    print(name)
outer(show)

#alex
name='alex'
def outer():
    name='sanxi'
    def inner():
        print(name)
    return inner()
ret=outer()
print(ret)

# sanxi
# None

 

name='alex'
def outer():
    name='sanxi'
    def inner():
        print(name)
    return inner      #返回一个内存地址
ret=outer()
ret()
print(ret)
result=ret()
print(result)

# sanxi
# <function outer.<locals>.inner at 0x02173030>
# sanxi
# None

33.利用递归实现1*2*3*4*5*6*7=5040       #########递归的每一层都必须有返回值

def func(x,sum):
    sum=sum*x
    if x==7:
        return sum
    ret=func(x+1,sum)
    return ret

print(func(1,1))

 

def func(x):
    if x==1:
        return 1
    return x*func(x-1)

print(func(7))

35.利用with实现同时打开两个文件(一读,一写,并将读取的内容写入到写入模式的文件中)

with open('a.txt','r') as x,open('b.txt','w') as y:
    y.write(x.read())

37.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个,第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个,以后每天如此,到第十天刚好剩一个,问猴子第一天摘了多少桃子?1534

def func(x,y):
    if y==10:
        return x

    return  func((x+1)*2,y+1)
print(func(1,1))

 

posted @ 2019-03-05 16:31  wind_y  阅读(102)  评论(0编辑  收藏  举报