2015-02-05 3 views
0

Для этого кода я пытаюсь получить общее среднее значение класса. Я бы открыл файл, а затем удалил все символы и строки из словаря, чтобы получить только оценки каждого ученика. Затем я пытаюсь получить сумму файла и затем делить его на длину, но я получаю сообщение об ошибке.Попытка получить среднее значение из словаря результатов

average = (sum(file)/len(file)) 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

вот код:

with open('classtwo.csv', 'r', newline='') as csv_file: 
     newfile = (str.strip("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z") for str in csv_file if str.strip("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z")) 
     file = [line.strip() for line in newfile if line.strip()] 
     average = (sum(file)/len(file)) 
     print(average)  

Каждый знает, как решить эту ошибку?

+0

Это IMHO не дубликат: ошибка одна и та же, но этот вопрос получает ошибку неявно через функцию 'sum'. –

+0

Вам не нужны все эти запятые в вызове 'str.strip()'. –

+1

@ HannesOvrén: согласился, повторно забил его на вопрос с тем же сообщением об ошибке, используя 'sum()'. –

ответ

0

file - это список строк. Функция sum ожидает число. Чтобы получить среднее значение, вы должны преобразовать каждую запись в file в число:

например. file = [float(x) for x in file]

Смежные вопросы