2016-04-29 84 views
0

我对Python完全陌生,并且在处理这些东西时遇到了一些麻烦。我一直在下面的代码中得到对应于第14行及之后的前述错误信息(以p =开头)。任何帮助都感激不尽。谢谢!TypeError:**或pow()的不受支持的操作数类型:'str'和'int'

file = open('random.txt','r') 
lines = file.readlines() 
file.close() 

import pandas 

colnames = ['x', 'y', 'e'] 
data = pandas.read_sv('random.txt', names=colnames) 

x = data.x.tolist() 
y = data.x.tolist() 
e = data.x.tolist() 

p = [sum(1/int(a**2) for a in e)] 
q = [sum(b/int(a**2) for b, a in zip(x, e))] 
r = [sum(c/int(a**2) for c, a in zip(y, e))] 
s = [sum(b**2/int(a**2) for b, a in zip(x, e))] 
t = [sum(b*c/int(a**2) for c, b, a in zip(y, x, e))] 
delta = p*s - q**2 

a = (r*s - q*t)/delta 
b = (p*t - q*r)/delta 

import math 
Ua = math.sqrt(s/delta) 
Ub = math.sqrt(p/delta) 

print('a', 'b', 'Ua', 'Ub') 
+0

'e'是一个字符串,'a'也是如此。然后你试图提高权力,但这没有任何意义,因为它是一个字符串。你需要解释你想做什么,因为你的代码现在没有多大意义。 – Carcigenicate

回答

0

看起来好像data.x.tolist()返回一个字符串列表。你必须在做数学运算前的每个项目强制转换为floatint

x = [float(a) for a in data.x.tolist()] 
y = [float(a) for a in data.x.tolist()] 
e = [float(a) for a in data.x.tolist()] 

希望它能帮助。

相关问题