加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

python如何定义一个函数求列表各项数据平均值

(2017-09-18 14:20:59)
标签:

python

math

算法

stem

分类: 编程与数学Math
#先看2012年小学奥数题#
六位同学数学考试的平均成绩是92.5分,他们的成绩是互不相同的整数,最高分是99分,最低分是76分,则按分数从高到低居第三位的同学至少得        分。

per = 6
max = 99
min = 76
ave = 92.5
ben = ave * 6

# print(random.choice(scor))
for x in range(76,99):
    if sum([99, 98, x, x - 1, x - 2, 76]) == ben:
        print(x)
输出:95


看问题后,深吸一口气,幸亏生的早,艾玛我要去考保证挨骂。小学数学没有达到奥数水平,解题思路的脑洞
不够大。工作多年遇到需要数学解决的问题更是小学都不到,数工资,算房屋面积,容积率和各种购置税,所
得税,小学二年级的乘法足够,足足够!

数学解法

              6人的成绩之和是555,减去两位99,76后为380;
                    那么另外4人的总和等于380,由此可以缩小问题描述
                 
              4人的平均成绩是380/4=95,问题范围缩小为4个数各不相同,总和为380,这4个数中大小排序
                 排第二的数不能小于多少?
                 4个当中排第一的数字越大,后面3位加起来的总数才能最小,其中排第二的越小(关键敲三下黑板)
                  再缩小问题表述为:6人中排第一的是99,第二的是98,那么排第三到第五的总和为282
                  
               3人的平均成绩是282/3=94,求3人中排第一的数不能小于多少?
                  假设我们想找的为这个数 x,x小于或等于94一定无法满足3人的分数总和为282
                  94+1试试,满足95+94+93等于282,也满足各不相同


               
用python解题

给自己找不自在吗?不是。孩子需要学习编程,想想我们当初学英语,学车简直在我们父母眼里是多么高大上的行为,嗯哼,现在学个编程就当是学开车,学开车不是当司机,不一定是当程序猿。明白?重要的事情说三遍:学编程老少皆宜,预防老年痴呆,小孩最佳的多点思维训练

python新手上路,先熟悉下离合,油门和档把在哪,上来就点火着车伤不起的自尊心啊。
废话少说,先看看油门在哪。

第一步:熟悉下数列是啥? 真简单,一个等式搞定。求和一句英文sum足够。打印出来看结果

score=[99,77,85,90,79,76] 
sum(score) print(score[:])
print(sum(score)) 结果输出:
"C:\Program Files\Anaconda3\python.exe" P:/python/六位同学数学考试的平均成绩.py
[99, 77, 85, 90, 79, 76]
506

第二步:来个稍微难点的,自动挡的,写起来难但用起来爽啊,随便添个数结果来了

x = int (input('请输入项数:',))
y = int (input('请输入项数:',))
z = int (input('请输入项数:',))
m = int (input('请输入项数:',))
a=[99,x,y,z,m,76]
print(sum(a))


第三步:挂个二挡试试。连续输入4个数,输出总分和平均分

scor=[99,76]
for i in range(4):
    x = int (input('请输入项数:',))
    if x<99 and x>76:
        # print(x)
        scor.append(x)
        # print(scor)
        ave=sum(scor)/len(scor)
print(sum(scor),ave)

第三步:挂个空档看卡输入4个随机数产生加入数列求和和平均

import random
max=99
min=76
ave=92.5
scor=[99,76]
print(random.choice(scor))
for i in range(4):
    x=random.randint(76,99)
    scor.append(x)
print(sum(scor),scor,sum(scor)/len(scor))

输出一列随机数
99
522 [99, 76, 76, 86, 98, 87] 87.0

第四步 按规定步幅添加数列

import random
per=6
max=99
min=76
ave=92.5
ben=ave*6
print(ben)

scor=[99,76]
print(random.choice(scor))
x=int(min)
for i in range(1,5):
    scor.append(1 + scor[-1])
    print(x)
    print(scor)
    s=sum(scor)
    print(s)

第五档


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有