2017-10-17 3 views
0

Je commence à coder en python et essaie d'incorporer une instruction if-else dans le code existant. Cependant, quand je lance le segment je reçois une erreur qui se lit comme suit:python 2.7: Débogage d'une instruction if-else (erreur de syntaxe)

else: 
^
SyntaxError: invalid syntax 

Voici le nouveau code, je suis en cours d'exécution. Où est-ce que je me suis trompé?

if value[4] > 0: ref = value[0]/value[4] 
else: 
    ref = "NA" 
if value[5] > 0: alt = value[1]/value[5] 
else: 
    alt = "NA" 
diff = ref_meth-alt_meth 
p = pvalue(*value[0:4]).two_tail 
output += "%s,%s,%s,%s\n" % (ref, alt, diff, p) 
#Note that the two if-else statements are separate from one another so I don't want to use elif. 

Voici le code original qui fonctionne, sauf lorsque la valeur [4] ou la valeur [5] est égale à 0.

ref = value[0]/value[4] 
alt = value[1]/value[5] 
diff = ref_meth-alt_meth 
p = pvalue(*value[0:4]).two_tail 
output += "%s,%s,%s,%s\n" % (ref, alt, diff, p) 

Répondre

1

Une chose qui est commun en Python est des erreurs étranges de syntaxe en raison d'espaces blancs étranges . Cela est probable dans un cas comme celui-ci, mais il est impossible de le dire avec certitude, car les espaces blancs ne se traduisent pas très bien lors de la copie de pâte. J'ai copié votre code, et cela a fonctionné, prouvant qu'il n'y a pas d'erreurs de syntaxe. Et comme cela a résolu votre problème, je l'ai aussi mis ici pour le rappeler aux autres.

Souvent, ce problème est résolu en supprimant simplement la nouvelle ligne, puis en la remettant en place.

0

Python est un langage qui détecte l'indentation si le code tombe, par exemple, sous l'instruction if ou else. Le code ci-dessus est seulement un bloc ou un morceau de code que vous essayez d'entrer et parce que je ne connais pas le programme entier, je trouve qu'il est difficile de déboguer cela. Essayez d'écrire le code de manière suivante:

if value[4] > 0: 
    ref = value[0]/value[4] 
else: 
    ref = "NA" 
if value[5] > 0: 
    alt = value[1]/value[5] 
else: 
    alt = "NA" 
diff = ref_meth-alt_meth 
p = pvalue(*value[0:4]).two_tail 
output += "%s,%s,%s,%s\n" % (ref, alt, diff, p) 

Assurez-vous d'avoir les niveaux d'indentation des blocs à l'intérieur si et d'autre même. Juste pour vous informer que python n'utilise pas les crochets qu'il détecte quand un code particulier est à l'intérieur d'un bloc en utilisant l'indentation. Donc pour python, votre code doit être correctement indenté pour fonctionner.

Vous pouvez également consulter la documentation officielle de Python 2.7 pour if and else.

Espérons que cela aide !!!