Pearl Philip Pearl Philip - 6 months ago 36
Python Question

'Syntax Error: invalid syntax' for no apparent reason

I've been trying to get a fix and can't find why the error keeps appearing. Pmin,Pmax,w,fi1 and fi2 have all been assigned finite values

guess=Pmin+(Pmax-Pmin)*((1-w**2)*fi1+(w**2)*fi2)


When i remove this line from the code, the same error appears at the next line of code, again for no reason I can think of

Edit: Here is the chunk of code I was referring to:
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))

Answer

If you remove the line where the error appears to be and the error moves to the next line, there are two possibilities.

Either both lines have a problem or the previous line has a problem which is being carried forward.

My bets are on the second option (even more so if you remove another line and it moves again).

For example, the following Python program twisty_passages.py:

xyzzy = (1 +
plugh = 7

generates the error:

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

despite the problem clearly being on line 1.

When posting code problems, it's better to give context, such as the five lines immediately before and after where you think the error is. You should also post verbatim the error message and any other useful information like a stack trace.


And, now that you have posted the code, it appears I was right. The parentheses in the line before where you get your error, is unmatched, very similar to the example I posted:

# open parentheses: 1  2             3
fi2=0.460*scipy.sqrt(1-(Tr-0.566)**2/(0.434**2)+0.494
#close parentheses:             1             2

Depending on what you're trying to achieve, the solution may be as simple as adding another closing parenthesis at the end, to close off the sqrt function.

I can't say for certain since I don't recognise the expression off the top of my head. Hardly surprising if it's to do with molecular biology (assuming PSAT is the enzyme, and the use of the typeMolecule identifier) - I seem to recall failing Biology consistently in my youth :-)

Comments