【发布时间】:2015-04-05 06:32:14
【问题描述】:
对于这段代码,我试图获得一个班级的总体平均水平。我会打开文件,然后从字典中删除所有字符和线条,以仅获取每个学生的分数。然后我尝试获取文件的总和,然后将其除以长度,但出现错误。
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)
有人知道如何解决这个错误吗?
【问题讨论】:
-
这是恕我直言,不是重复的:错误是一样的,但是这个问题通过
sum函数隐式地得到了错误。 -
str.strip()调用中不需要所有逗号。 -
@HannesOvrén:同意,使用
sum()将其重新锤击到具有相同错误消息的问题。 -
避免使用名为
file的变量,否则您将“隐藏”内置的file方法,这可能导致不需要/难以调试的错误