2016-04-29 86 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()] 

希望它能幫助。

相關問題