求各列表最大值的平均数,虽然解答有些暴力,但是这种方法并没有算出正确值,哪里错了
list_1 = eval(input())
# Please your code here
list_max = []
for i in list_1:
for k in range(len(i)-1):
imax = i[k]
if i[k+1] >= i[k]:
imax = i[k+1]
else:
pass
list_max.append(imax)
sum = 0
for item in list_max:
sum = sum + item
a = sum / len(list_max)
print('%.2f' % a)
第一次:
[[1,2,3,4],[2,3,4,5],[3,4,5,6]]
5.00
第二次:
[[4,2,3,1],[5,3,4,2],[6,4,5,3]]
4.00
第三次:
[[54, 28, 88, 99, 77],[99, 6, 37, 68, 83],[90, 52, 36, 4, 53],[85, 66, 11, 11, 61],[20, 52, 9, 81, 61],[23, 67, 37, 39, 18],[21, 36, 66, 80, 30],[74, 80, 5, 7, 96],[30, 35, 71, 73, 4],[40, 67, 67, 11, 71]]
73.60
前两次只是列表中的顺序改变,结果却不一样
思路:用循环遍历列表,找出该列表最大值并加入创建的空列表中,最后求和求平均值
[[54, 28, 88, 99, 77],[99, 6, 37, 68, 83],[90, 52, 36, 4, 53],[85, 66, 11, 11, 61],[20, 52, 9, 81, 61],[23, 67, 37, 39, 18],[21, 36, 66, 80, 30],[74, 80, 5, 7, 96],[30, 35, 71, 73, 4],[40, 67, 67, 11, 71]]
84.10
最终求这个列表的结果,正确答案是:84.10
两个错误:
for k in range(len(i)-1):
imax = i[k]
if i[k+1] >= i[k]:
imax = i[k+1]
基于你的代码,可以做以下修改:
list_1 = eval(input())
# Please your code here
list_max = []
for i in list_1:
imax = i[0]
for k in range(len(i)-1):
if i[k+1] >= imax:
imax = i[k+1]
else:
pass
list_max.append(imax)
sum = 0
for item in list_max:
sum = sum + item
a = sum / len(list_max)
print('%.2f' % a)
你把imax = i[k]写进循环里面了,那不是把上次保存的最大值给覆盖了吗
应该在循环外面写imax=i[0]
此外,你一直在比较i[k]和i[k+1],没有拿imax去跟i[k]比呀
有max函数可以简单做到这个工作,不要重复造轮子