目录
题目描述
给出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()