显示高于平均值的所有值,并在列表中给出这些值的位置

时间:2016-11-14 14:16:01

标签: python

嗨,我是编程python语言的新手,我很难找到显示高于平均值的所有值,并在数组中给出这些值的位置。

以下是整个问题: 2.编写一个程序,允许输入多个正整数值(以sentinel值终止)并将它们放在一个列表中。然后,程序计算值的平均值,并显示高于平均值的所有值,并给出数组中这些值的位置。

我已经编写了代码,只有平均部分正在工作,我不知道为什么循环不起作用。这就是代码:

listA=[]
x=eval(input("enter a number:"))
count=0

def average(listA):
    sum=0
    for i in range(len(listA)):
    sum=sum+listA[i]
    average_of_num=sum/count
    return average_of_num

while (x>0):
    listA.append(x)
    count=count+1
    x=eval(input("enter a number:"))

z=average(listA)
print("The average is:",z)

for i in range(len(listA)):
    if (listA[i] > z):
        print=("the number:",listA[i],"is greater than average and its position is",i)

你能帮助我吗,因为我在两天内对编程评估列表主题进行了测试,预计会出现这类问题。感谢

2 个答案:

答案 0 :(得分:0)

使用11-14 15:17:58.207 20492-20492/com.example.textureview_03 D/PreviewSurface: parameters mPreviewWidth: 960 11-14 15:17:58.207 20492-20492/com.example.textureview_03 D/PreviewSurface: parameters mPreviewHeight: 720 在迭代过程中跟踪列表中的位置。

enumerate

您有def average(listA): return sum(listA)/len(listA) listA=[] x=int(input("enter a number:")) while (x>0): listA.append(x) x=int(input("enter a number:")) z=average(listA) print("The average is:",z) for pos, i in enumerate(listA): if i > z: print("the number", i, "is greater than average and its position is",pos) 为变量print=(...分配值。

答案 1 :(得分:0)

我认为以下内容展示了您的目标。

>>> listA = [1,6,10,12,4,45,2,4,5,7,8]
>>> avg = sum(listA)/len(listA)
>>> counts = {}
>>> for ind, val in enumerate(listA):
        counts.setdefault(val,[]).append(ind)
>>> large_nums = {num: indicies for num, indicies in counts.items() if num > avg}

>>> print(avg)
9.454545454545455

>>> print(large_nums)
{10: [2], 12: [3], 45: [5]}

再次, 永远不会 在未经授权的用户输入上使用eval