TypeError:**或pow()的不受支持的操作数类型:'str'和'int'
问题描述:
我对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')
答
看起来好像data.x.tolist()
返回一个字符串列表。你必须在做数学运算前的每个项目强制转换为float
或int
:
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()]
希望它能帮助。
'e'是一个字符串,'a'也是如此。然后你试图提高权力,但这没有任何意义,因为它是一个字符串。你需要解释你想做什么,因为你的代码现在没有多大意义。 – Carcigenicate