1. 程式人生 > >利用 send 方法計算多個數的平均數

利用 send 方法計算多個數的平均數

yield brush 傳遞 計算 多個 sum += pre while 循環

利用 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

利用 send 方法計算多個數的平均數