嗨,我是编程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)
你能帮助我吗,因为我在两天内对编程评估列表主题进行了测试,预计会出现这类问题。感谢
答案 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
。