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

原文地址:https://www.cnblogs.com/artfeb/p/10800950.html

时间: 2024-11-05 00:41:32

利用 send 方法计算多个数的平均数的相关文章

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

用蒙特卡罗方法计算五人传球问题

蒙特卡罗方法百度解释http://baike.baidu.com/link?url=XwVnK6P_gip61_P9RzC9u6T4KQP5hmoZIvx57XBM66hPBONRRl3-yAwldGr3orFe 问题描述: 有A B C D E 五个人,围成一圈,开始球在A的手上,然后由A向与自己相邻的两边的某一人传球,然后要求计算球被传十次,最后又回到A手中的概率. 如上图所示,A只能把球传给B或者E,其几率是相同的. 对每个人来说把球传给左边或者右边的人的几率都是相同的,且为1/2: 这样

不使用中间变量交换两个数. 求平均数考虑溢出

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> //不使用中间变量交换两个数的值 void exchange_num(int *a, int *b) { ①* a =*a + *b;    //适用范围广 * b = *a -* b; * a =* a - *b; ②* a = (*a )*(*b); * b = (*a )/(*b); * a = (*a ) / (*b);//当两个数有

用多种方法交换两个数的值

今天上了C语言课,老师讲了有关交换两个数的问题.课后,经过自己的思考和总结,我得出了以下几种方法.虽然这个问题的方法还有很多,但我目前只了解到了这五种方法,希望大家多提建议和意见.其他的方法待补充奥... 法一: 大家最容易想的方法,首先设一个临时变量,利用临时变量将两个数交换.下面是实现它的代码: #include<stdio.h> int main() {   int num1=5,num2=10,tmp=0;   printf("before:\n");   prin

利用降维方法进行用户为基础的协同过滤优化

原文作者:新浪微博@王小科科科本文由36大数据翻译组-大海翻译,转载必须获得本站.原作者.译者的同意,拒绝任何不表明译者及来源的转载! 如何提高推荐算法的有效性?主要的方法是特征转化,模型选取,数据处理等等.降维是特征加工中的一个重要部分. 这篇博文主要讲述如何利用降维方法来提高以用户为基础的协同过滤方式,协同过滤依赖测量用户的相似性进行物品推荐.我会在接下来章节里阐述所用到的每一种方法. 1.基准值 这个数值的有效性来自R(均方根误差)的计算.我通过三种平均值计算方法设定系统基准值.第一,项目

C#面向对象编程-计算两个数的加减乘除

1.需求分析示例 名词提炼法: 示例:人开门 1.提取类 名词:人.门 类:人类.门类 2.分析每个类中应该有哪些方法或者属性 方法:开 那么"开"属于哪个类? 分析人和门谁最知道开这个动作,什么情况下才能使用开,门最清楚开的具体操作,等等一系列的分析,最终"开"属于门类. 3.门类示例代码 class Door { double menZhouJiaoDu;//门轴角度 double zhangDu;//弹簧张度 public void open() { //增加

利用“三角化”计算行列式快速求解程序(验证过很多题目的,绝对准确)

#include<iostream>#include<cmath>using namespace std;void main(){ //输入行列式开始 int n,i,j,a[10][10],T[10],max[10],b[10],k,q,p; float t[10][10],c,sum=-1; cout<<"阶数:"; cin>>n; cout<<"行列式:"<<endl; for(i=1;i

131. 利用脚本判断输入参数个数

利用脚本判断输入参数个数,具体题目我记不起来了. tar命令 压缩与解压缩 cpio 在Unix上的应用方法 tail滚屏浏览命令 ln 建立软连接 format的应用 ifconfig配置ip地址 cp文件夹 覆盖文件 crontab 的应用 对信息服务的理解 原文地址:https://blog.51cto.com/13823798/2408135

利用switch语句计算特定的年份的月份共有几天。

//利用switch语句计算特定的年份的月份共有几天. let year =2015 let month =2 //先判断闰年中二月份的情况 ifmonth ==2 { if (year %400 ==0||year %4 ==0 &&year %100 !=0) //闰年的二月份29天,非闰年的二月份是28天 { print("29天") }else { print("28天") } } else { //考虑其他两种情况 switchmonth