求出最接近平均值的元素(思路+代码详解)python实现

目录

题目描述

输入

输出

样例输入

样例输出

简述:

题目分析:

思路分析:

代码(最简):

代码(怨种版):


题目描述

给出n个学生的成绩,求出最接近平均值的元素

输入

n个整数(n>=1)

输出

最接近平均值的元素,有多个元素的话,输出排序靠前的原始值。

样例输入

6 5 4 3 2 1

样例输出

4

简述:

这个题很简单为什么要发这个题呢,为什么要写这个题呢,源于当时第一印象考虑的太复杂.......,后来写完之后发现一个for循环就可以解决,哭死......

题目分析:

1.给出一行数,求出平均值

2.找与平均值相差最小的元素(即差的绝对值最小),如果相差相同那么输出下标在前的

思路分析:

直接个给最简的思路,本人第一遍的代码会附上就不讲解了。

 1.求均值

2.先让minm取非常大,只要小于minm即更新(只能小于不能含有等于因为要输出下标在前的),用打擂台的思想注意比较,不断更新minm的值

3.输出结果

代码(最简):

l=list(map(int,input().split()))
aver=sum(l)/len(l)#求均值
minm=99999#minm进行初始化
k=l[0]#
for i in l:
    if minm>abs(i-aver):#更新minm,k的值
        minm=abs(i-aver)
        k=i
print(k)

代码(怨种版):

l=list(map(int,input().split()))
dt={}
sum1=sum(l)
evr=sum1/len(l)
for i in l:
    dt[i]=abs(i-evr)
s=sorted(dt.items(),key=lambda x :x[1])#按照值排序
c=s[0][1]
tp=tuple(filter(lambda x:x[1]==c,s))#在这里我是采用列表的过滤方法将差值相同的过滤出来
for i in l:
    for x in tp:
        if i==x[0]:#输出下标靠前的
            print(i)
            exit()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值