我一直在尝试找到修复程序,找不到为什么错误会出现的原因。PMIN,PMAX,W,FI1和FI2均分配了有限值

guess=Pmin+(Pmax-Pmin)*((1-w**2)*fi1+(w**2)*fi2)

当我从代码中删除此行时,下一行代码中出现相同的错误,我无缘无故地想到

编辑:这是我所指的代码的一部分:

def Psat(self, T):
    pop= self.getPborder(T)
    boolean=int(pop[0])

    P1=pop[1]
    P2=pop[2]
    if boolean:
        Pmin = float(min([P1, P2]))
        Pmax = float(max([P1, P2]))
        Tr=T/self.typeMolecule.Tc
        w=0.5*(1+scipy.tanh((10**5)*(Tr-0.6)))
        fi1=0.5*(1-scipy.tanh(8*((Tr**0.4)-1)))
        fi2=0.460*scipy.sqrt(1-(Tr-0.566)**2/(0.434**2)+0.494

        guess = Pmin+(Pmax-Pmin)*((1-w**2)*fi1+(w**2)*fi2)   #error here

        solution = scipy.optimize.newton(funcPsat,guess, args=(T,self))

答案

对于您认为正确的行上似乎是错误的问题,您通常可以删除/评论出现错误的线路,并且如果错误移至下一行,则有两种可能性。

任何一个两个都 线有问题或以前的 线路有一个问题。最多可能情况是第二个选项(如果您删除另一行并再次移动,则更重要的是)。

例如,以下Python程序twisty_passages.py

xyzzy = (1 +
plugh = 7

生成错误:

  File "twisty_passages.py", line 2
    plugh = 7
          ^
SyntaxError: invalid syntax

尽管问题显然在第1行。


在您的特殊情况下, 问题。括号中的括号根据以下片段,您的错误行是无与伦比的:

# open parentheses: 1  2             3
#                   v  v             v
fi2=0.460*scipy.sqrt(1-(Tr-0.566)**2/(0.434**2)+0.494
#                               ^             ^
# close parentheses:            1             2

根据您要实现的目标,解决方案可能 就像在最后添加另一个闭合括号一样简单,以关闭sqrt功能。

我不能说肯定 由于我不认识到我头顶的表达。如果(假设PSAT是酶,并且使用typeMolecule标识符)与分子生物学有关 - 我似乎回想起我年轻时始终如一地生物学:-)

来自: stackoverflow.com