web-dev-qa-db-fra.com

'Erreur de syntaxe: syntaxe non valide' sans raison apparente

J'ai essayé d'obtenir une solution et je ne trouve pas pourquoi l'erreur persiste. Les valeurs finies ont été attribuées à Pmin, Pmax, w, fi1 et fi2 

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

Lorsque je supprime cette ligne du code, la même erreur apparaît à la ligne suivante du code, encore une fois sans raison, je peux penser à

Edit: Voici le morceau de code auquel je faisais allusion:

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))
15
Pearl Philip

Pour les problèmes où il semble y avoir une erreur sur une ligne que vous pensez être correcte, vous pouvez souvent supprimer/commenter la ligne où l'erreur semble être et, si l'erreur se déplace sur la ligne suivante, il y a deux possibilités.

Soit les deux _ lignes ont un problème, soit la ligne précédente__ a un problème reporté. Le cas le plus probable est la deuxième option (encore plus si vous supprimez une autre ligne et qu'elle se déplace à nouveau).

Par exemple, le programme Python suivant twisty_passages.py:

xyzzy = (1 +
plugh = 7

génère l'erreur:

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

malgré le problème étant clairement sur la ligne 1.


Dans votre cas particulier, cela est le problème. Les parenthèses dans la ligne avant votre ligne d'erreur est sans correspondance, comme dans l'extrait de code suivant:

# 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

En fonction de vos objectifs, la solution peut consiste simplement à ajouter une autre parenthèse fermante à la fin, pour fermer la fonction sqrt.

Je ne peux pas dire pour certain puisque je ne reconnais pas l'expression de vive voix. Rien de surprenant si (en supposant que PSAT soit l’enzyme et l’utilisation de l’identificateur typeMolecule) c’est lié à la biologie moléculaire;

51
paxdiablo

Il vous manque un parent proche dans cette ligne:

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

Il y en a trois (et seulement deux). 
J'espère que cela t'aidera.

4
aaron newland

J'ai rencontré un problème similaire, avec une erreur de syntaxe dont je savais qu'il ne devrait pas s'agir d'une erreur de syntaxe. Dans mon cas, il s'est avéré qu'un interpréteur Python 2 essayait d'exécuter du code Python 3, ou inversement; Je pense que mon shell avait un PYTHONPATH avec un mélange de Python 2 et Python 3.

0
jbyler

Après avoir vérifié toutes les parenthèses, les quantités correspondantes pour '(' et ')' et tout, ce que j'ai trouvé dans mon cas, c'est que le support de boîte de code VS '[' génération auto-complète ajoute quelque chose de plus, bien que transparent. Heureusement, VS Code pointe droit vers la zone à problèmes (bien qu’il soit «invisible»). Je l'ai corrigé en supprimant et en tapant de nouveau les crochets, trait par trait.

0
Al Martins