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'
Antwort
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")]
das hat funktioniert! Vielen Dank –
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]))
Ich habe gerade hinzugefügt, dass, während Sie den Kommentar geschrieben haben :) – Puppe
- 1. Was ist falsch an meinem Code? Ich weiß nicht, was zu tun ist
- 2. (Python) Idk was zu tun ist
- 3. Serienschlüssel: Was ist zu tun?
- 4. Meine divs überlappen und ich weiß nicht, was zu tun ist
- 5. Ich weiß nicht, was @foreach in asp.net mvc 5 tun
- 6. Was ist das Stück Code zu tun, Python
- 7. Wie weiß es nicht, was AppDelegate ist?
- 8. Freemarker Parameter weiß nicht, was es ist
- 9. Ich weiß nicht, was der Fehler ist
- 10. Java-Fehler weiß nicht, was es ist
- 11. Nicht zu verstehen, was diese in Python tun mit
- 12. SIGSEGV SEGV_ACCERR Absturzberichte - Was ist zu tun?
- 13. Was ist mit Carthage zu tun?
- 14. Bei Cassandra, ich weiß nicht, wie zu tun, BY
- 15. Was ist mit dieser Nachricht zu tun?
- 16. webrick mit SSL was ist zu tun?
- 17. Fehler beim cURL-Bild. Nicht sicher, was zu tun ist
- 18. android: setAdapter() nicht aufgelöst. Was ist zu tun?
- 19. getMap() funktioniert nicht für SupportFragmentManager(), was zu tun ist?
- 20. SplObjectStorage funktioniert nicht mit String, was zu tun ist?
- 21. Kann application.Designer.vb nicht laden, was zu tun ist?
- 22. Ich weiß nicht, was passiert
- 23. ich weiß nicht, was in diesem Arduino Beispiel als nächstes zu tun
- 24. Tabelle mutiert, wenn „nach Einsatz“ Trigger ausgelöst, ich weiß nicht, was zu tun
- 25. C# Wie weiß ich, was Benutzereingabe ist?
- 26. pd.sort_values nicht zu tun, was es sollte
- 27. Weiß jemand was gvfsd-http ist?
- 28. Was ist der Zweck zu tun ist: x.map {_ =>()}
- 29. für das Schleifen in Python 3 nicht tun, was ich will es zu tun
- 30. Was ist das "===!" Betreiber tun?
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
es sieht so aus, als ob Sie versuchen, mathematische Operationen auf Zeichenketten anzuwenden, daher ist es ein Fehler – mast3rd3mon
Wenn Sie etwas Einblick in die Datei Átomo.txt geben könnten, wäre das hilfreich. – Puppe