2016-08-09 7 views
-3

を定義されていないが、次のとおりです。NameError:次のように名前、私は私のコード、いくつかのデータを分析しようとしている

for line in h: 

    if line_cnt in start_x: 
     recording_scores = True 
     temp_i = start_x.index(line_cnt) 
     score_acc = [0, 0, 0] 
     codon_id = remainder_x[temp_i] 
     temp_z = line.split() 
     temp_score = float(temp_z[1]) 
     score_acc[codon_id] += temp_score 
     codon_id = (codon_id + 1) % 3 

    if temp_i>0 and line_cnt == end_x[temp_i]: 
     score_x0[temp_i] = score_acc[0]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
     score_x1[temp_i] = score_acc[1]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
     score_x2[temp_i] = score_acc[2]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
     temp_i = -1 
     recording_scores = False 

私はそれを言って、エラーメッセージを取得しておいてください。

Traceback (most recent call last): 
    File "CRECDR_analysis.py", line 79, in <module> 
    if temp_i>0 and line_cnt == end_x[temp_i]: 
NameError: name 'temp_i' is not defined 
CRE_CDR.pbs.e4524341 (END) 

私は定義されたと思いましたtemp_iは最初のif文には含まれますが、定義は2番目のif文に引き継がれませんか?誰かが私のためにこれをクリアすることができますか?

+4

まあ、 'start_x'でするline_cntがfalse何ですか? –

答えて

0

Morganが指摘しているように、最初のループに入っていなければtemp_iまたはline_cntを定義しません。私はあなたが正確に何をしたいのか分からないが、もし最初の条件が真であれば、第二の条件をテストすることを意味するだけの場合はおそらくこれを行うことを意味する。時間に行を :

for line in h: 

    if line_cnt in start_x: 
     recording_scores = True 
     temp_i = start_x.index(line_cnt) 
     score_acc = [0, 0, 0] 
     codon_id = remainder_x[temp_i] 
     temp_z = line.split() 
     temp_score = float(temp_z[1]) 
     score_acc[codon_id] += temp_score 
     codon_id = (codon_id + 1) % 3 

     if temp_i>0 and line_cnt == end_x[temp_i]: 
      score_x0[temp_i] = score_acc[0]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
      score_x1[temp_i] = score_acc[1]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
      score_x2[temp_i] = score_acc[2]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
      temp_i = -1 
      recording_scores = False 

そうでない場合は、次のようなelse文でtemp_iline_cntを定義したいと思う

if line_cnt in start_x: 
     recording_scores = True 
     temp_i = start_x.index(line_cnt) 
     score_acc = [0, 0, 0] 
     codon_id = remainder_x[temp_i] 
     temp_z = line.split() 
     temp_score = float(temp_z[1]) 
     score_acc[codon_id] += temp_score 
     codon_id = (codon_id + 1) % 3 
    else: 
     temp_i = 0 
     line_cnt = foo 

    if temp_i>0 and line_cnt == end_x[temp_i]: 
     score_x0[temp_i] = score_acc[0]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
     score_x1[temp_i] = score_acc[1]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
     score_x2[temp_i] = score_acc[2]/((end_x[temp_i] - start_x[temp_i] + 1)/3) 
     temp_i = -1 
     recording_scores = False 
+0

これは同じコードではありませんか? – sophia

+0

いいえ。最初のものが真であれば、2番目の条件をテストすることを意図していると仮定したため、2番目のifを最初のifに移動しました。 –

関連する問題