利用 send 方法計算多個數的平均數
阿新 • • 發佈:2019-05-02
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 方法計算多個數的平均數