Python 基础篇 第九节课

生成器函数

def produce_baozi():
    for i in range(10):
        yield "一笼包子%s" %i
pro_g = produce_baozi()
baozi1=pro_g.__next__()
baozi1=pro_g.__next__()
baozi1=pro_g.__next__()
print("来了一个人吃包子",baozi1)

#输出来了一个人吃包子 一笼包子2

  优点:1生成器的好处是延迟计算,一次返回一个结果。它不会一次生成所有结果,这对于大数据处理十分有用

        2生成器有效提高代码可读性

  注意:生成器只能遍历一次

生产消费者模式

def test():
    yield 1                 #yield   1 相当于return 控制函数的返回值           2 接受send传来的值
    yield 123
t = test()
res = t.__next__()
print(res)
t.send(None)

作业

1 列举布尔值为False的值

0,"",[],{},None.False

2写函数

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

符合条件的数字个数及符合条件的数字的总和

def func(start,end):
    n=[]
    sum=0
    for i in range(start,end):
        if i % 3 == 0 and i % 7 == 0:
            n.append(i)
            sum+=i
    print(len(n))
    print('总数和是 %d' %sum)
func(1,100)

3 break/continue/return的区别

  break:结束当前循环

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

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

4函数传递参数时,时引用还是复制值?

  引用

5三元运算书写格式以及应用场景

  变量 = 值 if条件 else值二

  ret = 1 if 1>0 else 5

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

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

7简述函数 位置参数,关键词参数,可变长参数的特点以及注意项

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

  关键词参数:传入实参时按照形参的值

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

  可变长参数:*args **kwargs,一个只能接受没有位置的实参或参入的列表,元组,两可以接受关键字参数和字典参数

8简述python3中range函数和python2.7中range函数有什么区别

  python3中range不会生成值,只有用的时候才会生成

  python2.7中range会直接生成一个列表,值已经生成

9简述对象和类的关系

  如果值是某类型,那这个值就是这个类的对象

10内置函数all和any的区别

  all是如果是空的,返回True,如果非空,全真为真,否则为假

11文件打开模式“r”和“rb”的区别

  r是只读模式打开,默认以utf-8格式

  rb是以二进制格式打开

12利用递归实现1*2*3*4*5*6*7=5040

def f(n):
    if n ==1:
        return 1
    else:
        return n*f(n-1)
a=f(7)
print(a)

13 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

s=1
func = lambda x:(x+1)*2
for i in range(9):
    s= func(s)
print(s)

 

posted @ 2018-09-18 11:22  Lune23333  阅读(54)  评论(0)    收藏  举报