利用 send 方法计算多个数的平均数

利用 send 方法计算多个数的平均数,并且可以多次输入:

def averager():            # 创建一个生成器函数
    sum = 0                # 创建一个总数变量
    count = 0              # 创建一个个数变量
    avg = 0                # 创建一个平均数变量
    while True:            # while 循环
        num = yield avg    # 先执行 next,然后再执行 send,yield avg 接受 send 返给函数的值,传给 num。
        sum = sum + num    # 第一次 sum = 0 + 10 (num = 10);第二次 send 传递 20 时,sum=10+20
        count += 1         # 第一次count=1;第二次运算,count=2;
        avg = sum / count  # 第一次avg = 10/1;第二次运算,avg=30/2;


a = averager()
get_avg = a.__next__()
get_avg = a.send(10)       # 向 yield 传送 10,然后接受返回值 10 给 get_avg
get_avg = a.send(20)       # 向 yield 传送 20,然后接受返回值 15 给 get_avg
print(get_avg)             # 打印结果为 15

  打印结果为 15

posted @ 2019-05-01 22:04  我要变大神  阅读(207)  评论(0编辑  收藏  举报