2016-11-10 104 views
0

的问题可以发现hereHackerrank加权平均

我试图计算的加权平均,但是当我尝试填充与循环它只是无所事事的阵列?

size = raw_input() 
arr = raw_input() 
w = raw_input() 
deger = [1,2,2,2,2] 


size = [int(i) for i in size.split()] 
size = size[0] 
arr = [int(i) for i in arr.split()] 
w = [float(i) for i in w.split()] 


def wm (x,y,s): 
    for i in range(0,s-1): 
    deger[i] = int(input(x[i]*y[i])) 


return sum(deger) 



print(wm(arr,w,size)) 
+3

我希望你的实际代码不具有靠不住的缺口! 'def'应该在左边界上并且'return'缩进。无论如何,在计算'x [i] * y [i]'时,不应该使用'int(input(')',你也应该'append()'到'deger',而不是覆盖以前的值 –

+0

I已经尝试追加,但我得到**不能分配给函数调用**错误 – bukowski

+1

首先阅读链接中提供的教程,因为你的加权平均值计算不正确 – acw1668

回答

1

正是基于与正确的缩进你的代码进行一些修改:

size = raw_input() 
arr = raw_input() 
w = raw_input() 
#deger = [1,2,2,2,2] # not necessary to initialize 'deger' here 


size = [int(i) for i in size.split()] 
size = size[0] 
arr = [int(i) for i in arr.split()] 
w = [float(i) for i in w.split()] 


def wm (x,y,s): 
    deger = [] # initialize empty 'deger' here 
    for i in range(0,s): # 's-1' will not include the last item of x and y 
     deger.append(x[i]*y[i]) 
    return sum(deger)/sum(y) 

print('%.1f'%wm(arr,w,size)) # as 1 decimal place is required 
1

打印结果之前您有一个return