没有明显原因的“语法错误:无效语法”

新手上路,请多包涵

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

原文由 Pearl Philip 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答

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

  • 两条 线都有问题(第二条可能被第一条隐藏了);或者
  • 一行有一个问题,正在推进中。

可能 的情况是第二种选择(如果您删除另一条线并再次移动,则更是如此)。

例如,以下 Python 程序 twisty_passages.py

 xyzzy = (1 +
plugh = 7

产生错误:

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

尽管问题显然在第 1 行。


在您的特定情况下,第二种情况是 zctual 问题。根据以下带注释的代码段,错误行 之前 的行中的括号不匹配:

 # 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 标识符)与分子生物学有关,这不足为奇 - 我似乎记得我年轻时一直未能通过生物学 :-)

原文由 paxdiablo 发布,翻译遵循 CC BY-SA 4.0 许可协议

您在这一行中缺少一个封闭的括号:

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

有三个 ( 而只有两个 )

原文由 aaron newland 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏