“语法错误:无效语法”,无明显原因

2024-04-19 07:11:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试修复,但找不到错误不断出现的原因。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))

Tags: 代码self错误原因scipypoptrp2
3条回答

在这一行中,您缺少一个接近的paren:

fi2=0.460*scipy.sqrt(1-(Tr-0.566)**2/(0.434**2)+0.494

有三个(只有两个)。
我希望这对你有帮助。

我遇到了一个类似的问题,语法错误,我知道不应该是语法错误。在我的例子中,Python 2解释器试图运行Python 3代码,反之亦然;我认为我的shell有一个PYTHONPATH,它混合了python2和python3。

对于您认为正确的行上似乎有错误的问题,您通常可以删除/注释出现错误的行,如果错误移动到下一行,则有两种可能。

要么两个行都有问题,要么上一个行有问题,该问题正在结转。最有可能的情况是第二个选项(如果删除另一行并再次移动,情况更是如此)。

例如,下面的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标识符)与分子生物学有关,那就不足为奇了——我似乎一直记得年轻时失败的生物学:-)

相关问题 更多 >