2016-04-29 22 views
0

Ich bin Python völlig neu und habe Probleme, mich mit diesen Dingen zu beschäftigen. Ich bekomme die oben genannte Fehlermeldung entsprechend Zeile 14 und höher (beginnend mit p =) im folgenden Code. Jede Hilfe wird sehr geschätzt. Vielen Dank!TypeError: nicht unterstützter Operandentyp für ** oder pow(): 'str' und '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' ist ein String, also wird' a'. Sie versuchen dann, 'a' auf eine Potenz zu erhöhen, aber das ergibt keinen Sinn, da es sich um eine Zeichenfolge handelt. Sie müssen erklären, was Sie tun wollen, da Ihr Code gerade jetzt keinen Sinn macht. – Carcigenicate

Antwort

0

Es scheint wie data.x.tolist() gibt eine Liste der Zeichenfolgen zurück. Sie müssen jedes Element float oder int, bevor Sie mathematische Operationen Stimmen:

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()] 

Hoffe, es hilft.

Verwandte Themen