Python ';语法错误:无效语法';无缘无故

Python ';语法错误:无效语法';无缘无故,python,syntax-error,spyder,Python,Syntax Error,Spyder,我一直试图得到一个修复,但找不到为什么错误不断出现。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] P

我一直试图得到一个修复,但找不到为什么错误不断出现。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_passions.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是酶,并且使用了
typemolecular
标识符)它与分子生物学有关,也就不足为奇了——我似乎记得在我年轻的时候,生物学一直在失败:-)

在这一行中,你缺少了一个相近的参数:

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

有三个(只有两个)
我希望这将对您有所帮助。

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

如果您使用Python运行该程序,请尝试使用Python 3运行它。

我注意到,在以下位置使用空格可能会导致无效语法错误,原因不明:

print(f'{something}')

Python IDLE似乎出于某种原因(即使第一行恰好是注释)跳转并高亮显示第一行的一部分,这是误导性的。

错误的根源可能发生在您发布的行的上方。你能再发一点代码吗?完整的回溯你以前可能忘了在什么地方放一个括号。没有更大的背景,不可能准确地说出。请提供完整的回溯和再现问题的代码。我发现了错误,前面的一行中缺少括号。感谢您的帮助我发现了错误,前面的一行中缺少一个括号。感谢您的帮助在我的案例中,我错过了前一行的结束括号,非常感谢。根据paxdiablo,我的案例被归类为“前一行有问题,正在结转”。我发现错误的方法是逐行向上注释代码,直到语法错误暂时消失。我给出注释标记的最后一行是导致错误的那一行。@3mpty我有一个类似的问题,如果其他人遇到这个问题并想尝试我的解决方案,我就把我的解决方案放在这里。这在任何方面都不相似。问题‘’。更改解释器版本没有帮助。我遇到了这个问题,解决方案为我解决了它。它被
**
语法阻塞了。非常感谢。