2017-11-24 5 views
-4
import scipy as sp 

atomos=open("Átomo.txt", 'r') 

deltaX=[] 
deltaY=[] 
deltaZ=[] 
d=0 

def dist(xf, xi, yf, yi,zf, zi): 
    d=sp.sqrt((xf-xi)*(xf-xi)+(yf-yi)*(yf-yi)+(zf-zi)*(zf-zi)) 
    return d 

for colunas in atomos: 

    coluna_limpa=colunas.strip().split("\t") 
    deltaX.append(coluna_limpa[1]) 
    deltaY.append(coluna_limpa[2]) 
    deltaZ.append(coluna_limpa[3]) 
print(deltaX, deltaY, deltaZ) 

d= dist(deltaX[0], deltaX[9],deltaY[0], deltaY[9], deltaZ[0], deltaZ[9]) 

print("A distância do segmento formado pelos atomos é de ", d) 


File "<ipython-input-5-e2b6e08387d0>", line 11, in dist 
    d=sp.sqrt((xf-xi)*(xf-xi)+(yf-yi)*(yf-yi)+(zf-zi)*(zf-zi)) 

TypeError: unsupported operand type(s) for -: 'str' and 'str' 
+1

Offensichtlich sind die von diesen Variablen referenzierten Objekte Strings und können daher nicht subtrahiert werden. Vielleicht möchten Sie sie zuerst in Zahlen umwandeln. Da Sie nichts angegeben haben, was Ihr Programm tun soll, kann ich nur raten. – khelwood

+0

es sieht so aus, als ob Sie versuchen, mathematische Operationen auf Zeichenketten anzuwenden, daher ist es ein Fehler – mast3rd3mon

+0

Wenn Sie etwas Einblick in die Datei Átomo.txt geben könnten, wäre das hilfreich. – Puppe

Antwort

2

colunas wird aus der Datei als Zeichenfolge gelesen, und das Aufteilen führt zu einer Liste von Zeichenfolgen. Wenn Sie sie als Zahlen verwenden möchten, müssen Sie sie explizit konvertieren. Z.B .:

coluna_limpa = [float(x) for x in colunas.strip().split("\t")] 
+0

das hat funktioniert! Vielen Dank –

2

Sie versuchen, Strings zu subtrahieren, von Zeichenfolge zu konvertieren int() in Integer, zu verwenden.

d = dist(int(deltaX[0]), int(deltaX[9]), 
     int(deltaY[0]), int(deltaY[9]), 
     int(deltaZ[0]), int(deltaZ[9])) 

oder wenn Ihre Zahlen Schwimmer sind, float() verwenden.

d = dist(float(deltaX[0]), float(deltaX[9]), 
     float(deltaY[0]), float(deltaY[9]), 
     float(deltaZ[0]), float(deltaZ[9])) 
+1

Ich habe gerade hinzugefügt, dass, während Sie den Kommentar geschrieben haben :) – Puppe

Verwandte Themen