‘Syntaxisfout: ongeldige syntaxis’ zonder duidelijke reden

Ik heb geprobeerd een oplossing te krijgen en kan niet vinden waarom de fout blijft verschijnen. Pmin,Pmax,w,fi1 en fi2 hebben allemaal eindige waarden gekregen

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

Als ik deze regel uit de code verwijder, verschijnt dezelfde fout bij de volgende regel code, opnieuw zonder reden die ik kan bedenken

Bewerken: hier is het stukje code waar ik naar verwees:

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))

Antwoord 1, autoriteit 100%

Voor problemen waarbij het een fout lijkt te zijn op een regel waarvan u denkt dat deze correct is, kunt u de regel waar de fout lijkt te staan ​​vaak verwijderen/commentaar toevoegen en als de fout naar de volgende regel wordt verplaatst, zijn er twee mogelijkheden.

Ofwel beideregels hebben een probleem of de vorigeregel heeft een probleem dat wordt overgedragen. Het meest waarschijnlijkgeval is de tweede optie (en nog meer als je een andere regel verwijdert en deze weer beweegt).

Bijvoorbeeld het volgende Python-programma twisty_passages.py:

xyzzy = (1 +
plugh = 7

genereert de fout:

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

ondanks dat het probleem duidelijk op lijn 1 is.


In jouw specifieke geval is dat hetprobleem. De haakjes in de regel vóóruw foutregel komt niet overeen, volgens het volgende fragment:

# 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

Afhankelijk van wat u probeert te bereiken, is de oplossing mogelijkzo simpel als het toevoegen van nog een haakje sluiten aan het einde, om de functie sqrtaf te sluiten.

Ik kan het zekerniet zeggen omdat ik de uitdrukking niet uit mijn hoofd herken. Het is niet verwonderlijk dat (ervan uitgaande dat PSAT het enzym is, en het gebruik van de typeMolecule-identificatiecode) het te maken heeft met moleculaire biologie – ik meen me te herinneren dat ik in mijn jeugd consequent faalde in biologie 🙂


Antwoord 2, autoriteit 7%

Je mist een gesloten paren in deze regel:

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

Er zijn er drie (en slechts twee).
Ik hoop dat dit je zal helpen.


Antwoord 3, autoriteit 5%

Als je het programma met python uitvoert, probeer het dan met python3.


Antwoord 4

Ik kwam een ​​soortgelijk probleem tegen, met een syntaxisfout waarvan ik wist dat dit geen syntaxisfout zou moeten zijn. In mijn geval bleek dat een Python 2-interpreter Python 3-code probeerde uit te voeren, of omgekeerd; Ik denk dat mijn shell een PYTHONPATH had met een mix van Python 2 en Python 3.


Antwoord 5

Ik heb gemerkt dat een ongeldige syntaxisfout zonder duidelijke reden kan worden veroorzaakt door het gebruik van spatie in:

print(f'{something something}')

Python IDLE lijkt om de een of andere reden te springen en een deel van de eerste regel te markeren (zelfs als de eerste regel een opmerking is), wat misleidend is.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes