【问题标题】:'Syntax Error: invalid syntax' for no apparent reason\'Syntax Error: invalid syntax\' 不明原因
【发布时间】:2022-06-24 07:32:51
【问题描述】:

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

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

  • 要么两个都行有问题(第二个可能已被第一个隐藏);或者
  • 以前的线路有问题,正在推进中。

最多可能case 是第二个选项(如果您删除另一行并再次移动,则更是如此)。

例如下面的 Python 程序twisty_passages.py

xyzzy = (1 +
plugh = 7

产生错误:

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

尽管问题显然在第 1 行。


在您的特定情况下,第二种情况是 zctual 问题。行中的括号根据以下带注释的 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】:

    如果您使用 python 运行程序,请尝试使用 python3 运行它。

    【讨论】:

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

    您在这一行中缺少一个紧密的括号:

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

    有三个(,只有两个)

    【讨论】:

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

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

    【讨论】:

      【解决方案5】:

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

      print(f'{something something}')
      

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

      【讨论】:

      猜你喜欢
      • 2021-07-27
      • 2022-08-17
      • 2015-06-10
      • 1970-01-01
      • 2022-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多