python - 为什么我在语法完全有效的一行中出现语法错误 "SyntaxError: invalid syntax"?

标签 python syntax-error spyder

我有这个代码:

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))

在标记的代码行,guess = Pmin+(Pmax-Pmin)*((1-w**2)*fi1+(w**2)*fi2),我得到一个错误信息:SyntaxError: invalid syntax.

PminPmaxwfi1fi2此时分配了,为什么会出现错误?

当我从代码中删除该行时,下一行代码会再次出现同样的错误,原因不明。

最佳答案

如果在显示正确的行上报告错误,请尝试删除(或注释掉)出现错误的行。如果错误移动到下一行,有两种可能:

  • 两行都有问题(第二行可能被第一行隐藏了);或
  • previous 行有一个问题,正在处理中。

后者更有可能,特别是如果删除另一行会导致错误再次移动。

例如如下代码,保存为twisty_passages.py:

xyzzy = (1 +
plugh = 7

将在第 2 行产生错误,即使问题显然是由第 1 行引起的:

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

问题中的代码也有类似的问题:上一行的代码有不平衡的括号。注释以使其更清晰:

# 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

没有真正的通用解决方案 - 需要分析和理解代码,以确定如何括号应该改变。

关于python - 为什么我在语法完全有效的一行中出现语法错误 "SyntaxError: invalid syntax"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24237111/

相关文章:

ruby - ruby 乘法语句中星号中断语法前的空格

python - ModuleNotFoundError : No module named 'cv2' in Spyder IDE, 即使在我的 windows pc 中使用 anaconda 成功安装了 opencv 库

python - verbose_name_plural 在模型中出乎意料?

python - 删除Python字典中的重复值

python - 如何将 tkinter Canvas 滚动到绝对位置?

vba - 错误3134-语法错误-可以运行数年,但现在不会。找不到错误?

java - 获取 Java mysql SQL 语法错误,但我的查询似乎正常

python - opencv和spyder ipython控制台卡住

python - Spyder-IDE 如何打开参数检查

python - 返回确切的 python 函数的最佳方法只是作为单个可重复字符串运行