【问题标题】:'Syntax Error: invalid syntax' for no apparent reason没有明显原因的“语法错误:无效语法”
【发布时间】:2014-08-05 21:21:14
【问题描述】:

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


【解决方案1】:

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

两行都有问题,或者上一个行有问题,正在处理中。最可能的情况是第二种选择(如果您删除另一行并再次移动,则更是如此)。

例如下面的Python程序twisty_passages.py

xyzzy = (1 +
plugh = 7

产生错误:

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

尽管问题显然在第 1 行。


在您的特定情况下,的问题。 before 行中的括号与您的错误行不匹配,根据以下 sn-p:

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

【讨论】:

    【解决方案2】:

    您在这一行中缺少一个右括号:

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

    ( 有三个,) 只有两个。

    【讨论】:

    • 根据 paxdiablo 的说法,我的案例被归类为“上一行有问题正在结转”。我找到错误的方法是逐行向上注释代码,直到语法错误暂时消失。我给注释标记的最后一行是导致错误的。
    【解决方案3】:

    我遇到了一个类似的问题,有一个我知道不应该是语法错误的语法错误。就我而言,结果证明 Python 2 解释器正在尝试运行 Python 3 代码,反之亦然;我认为我的 shell 有一个混合了 Python 2 和 Python 3 的 PYTHONPATH。

    【讨论】:

      【解决方案4】:

      如果你用python运行程序,试试用python3运行吧。

      【讨论】:

      • @3mpty 我遇到了类似的问题,如果其他人遇到问题并想尝试我的解决方案,我只是将我的解决方案放在这里。
      • 它在任何方面都不相似。问题忘记了额外的')'。更改解释器版本无济于事。
      • 我遇到了这个问题,解决方案为我解决了这个问题。 ** 语法令人窒息。谢谢!
      【解决方案5】:

      我注意到使用空格可能会导致无明显原因的无效语法错误:

      print(f'{something something}')
      

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

      【讨论】:

      猜你喜欢
      • 2014-04-12
      • 2014-09-10
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2021-08-14
      • 2021-08-21
      • 1970-01-01
      相关资源
      最近更新 更多