【问题标题】:Don't know what to do? python [closed]不知道该怎么办?蟒蛇[关闭]
【发布时间】:2018-05-08 15:34:46
【问题描述】:
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'

【问题讨论】:

  • 显然这些变量引用的对象是字符串,所以你不能减去它们。也许您想先将它们转换为数字。由于您没有说明您的程序应该做什么,我只能猜测。
  • 看起来您正在尝试将数学运算应用于字符串,因此会出错
  • 如果您可以深入了解 Átomo.txt 包含的内容,那将很有帮助。
  • 这不是问题。请阐述您的问题并添加明确的标题。

标签: python typeerror


【解决方案1】:

colunas 作为字符串从文件中读取,拆分它会产生一个字符串列表。如果要将它们用作数字,则必须显式转换它们。例如:

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

【讨论】:

  • 成功了!非常感谢
【解决方案2】:

您正在尝试减去字符串,将字符串转换为整数,请使用int()

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

或者如果您的数字是浮点数,请使用float()

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

【讨论】:

  • 我刚刚在你写评论的时候补充了一句:)
猜你喜欢
  • 2023-01-08
  • 2021-06-21
  • 2013-11-06
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 2012-02-01
相关资源
最近更新 更多