web-dev-qa-db-ja.com

明確な理由なしに「構文エラー:無効な構文」

修正プログラムを取得しようとしていますが、エラーが表示され続ける理由を見つけることができません。 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))
23
Pearl Philip

正しいと思われる行にエラーがあると思われる問題の場合、エラーがあると思われる行を削除またはコメントすることができます。エラーが次の行に移動する場合、2つの可能性があります。

both行に問題があるか、previous行に問題があります。ほとんどの可能性の高いの場合が2番目のオプションです(別の行を削除して再び移動した場合はさらにそうです)。

たとえば、次のPythonプログラムtwisty_passages.py

xyzzy = (1 +
plugh = 7

エラーを生成します:

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

問題は明らかに1行目にあります。


あなたの特定のケースでは、それはis問題です。 before行の括弧は、次のスニペットのように、エラー行が一致していません。

# 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

達成しようとしているものに応じて、解決策mayは、最後に別の閉じ括弧を追加するだけで、sqrt関数を閉じます。

certainについて言えないのは、頭の上の表現がわからないからです。 (PSATが酵素であり、typeMolecule識別子を使用していると仮定すると)分子生物学に関係している場合、驚くことはほとんどありません。

60
paxdiablo

次の行に閉じ括弧がありません:

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

3つあります(2つだけです)。
これがお役に立てば幸いです。

4
aaron newland

構文エラーではないことを知っていた構文エラーで、同様の問題が発生しました。私の場合、Python 2インタープリターがPython 3コードを実行しようとしていた、またはその逆であることが判明しました。私のシェルには、Python 2とPython 3が混在したPYTHONPATHがあったと思います。

0
jbyler

すべての括弧、「(」および「)」のすべての一致する数量、およびすべてをチェックした後、私のケースで見つけたのは、VS Codeボックスブラケット「[」auto-complete-generationは透明ではあるが余分なものを追加していることでした。幸いなことに、VS Codeは問題の領域を正しく示しています(ただし、「目に見えない」)。削除し、ストロークごとにボックスブラケットを再入力することを修正しました。

0
Al Martins