1. ホーム
  2. python

[解決済み] 理由もなく「シンタックスエラー:無効な構文」と表示される

2022-03-03 18:06:38

質問

修正が必要なのですが、なぜエラーが出続けるのかがわかりません。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))

解決方法は?

正しいと思っている行でエラーになっているような問題では、エラーがあるように見える行を削除/コメントすることで、次の行にエラーが移動する場合、2つの可能性があることが多いです。

どちらか 両方 の行に問題があるか 前の の行に問題があり、それが繰り越されている。最も 可能性が高い の場合は、2番目の選択肢になります(別の行を削除して再び移動する場合はなおさらです)。

例えば、次のようなPythonのプログラムです。 twisty_passages.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が酵素だと仮定すると、その使用は typeMolecule というのは、分子生物学に関係するもので、私は若い頃、生物学はいつも失敗していたように記憶しています :-)