2017-10-17 17 views
0

Pythonでコーディングし、既存のコードにif-else文を組み込むのが新しいです。python 2.7:if-else文のデバッグ(構文エラー)

else: 
^
SyntaxError: invalid syntax 

をここで私が実行している新しいコードは次のとおりです。私はセグメントを実行したときしかし、私は、読み込みエラーが発生します。どこで私は間違えましたか?

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. 

この値は、[4]または値[5] 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) 

答えて

1

Pythonで共通だことの一つは、奇妙な空白による奇妙な構文エラーであるに等しい場合を除いて働く元のコードです。これは、このような場合がありますが、コピー・ペースト中に空白が変換されないことがあるため、確実に言うことはできません。あなたのコードを貼り付けてコピーしたところ、構文エラーがないことが証明されました。それがあなたの問題を解決したので、私は他の人のために思い出させるためにここに入れました。

この問題は、改行を削除してから元に戻すだけで解決できることがよくあります。

0

Pythonは、ifやelse文のように、コードがインデントされた場合のインデントを検出する言語です。上に示したコードは、あなたが入力しようとしているブロックまたはコードの一部だけであり、プログラム全体がわからないので、それをデバッグするのが難しいと感じています。

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) 

ブロック内のインデントレベルは必ず内側にしてください。そうでない場合は同じにしてください。 Pythonは括弧を使用しないので、インデントを使用して特定のコードがブロック内にあるときに検出します。したがって、Pythonの場合、コードは適切なインデントで実行する必要があります。

if and elseのPython 2.7の公式ドキュメントを参照することもできます。