2017-04-25 15 views
1

「a [i] = GEH」というステートメントは、GEHの値をリストに割り当てていません。 なぜですか?誰かが私に何が間違っているか教えてくれたら大いに感謝します。リストに値を割り当てる

コード: -

import os, sys 
global rec 

def interpret_string(s): 
    if not isinstance(s, str): 
     return str(s) 
    if s.isdigit(): 
     return int(s) 
    try: 
     return float(s) 
    except ValueError: 
     return s 

f= open("turn.prn","r") 
f1=open('turn.out', 'a') 

if f.mode == 'r': 
    fl = f.readlines() 

i = 0 
a = [0.0] * 1000 
rec = [0] * 1000 

for x in fl: 
    vol = interpret_string(x[90:96]) 
    ul1 = interpret_string(x[32:40]) 
    ul2 = interpret_string(x[41:49]) 

    if vol != str(x[90:96]): 
     if vol > 0 and ul1 > 0: 
      Diff = (((ul1 - vol)/ul1) ** 2) ** 0.5 
      GEH = (((2 * (ul1-vol)**2))/(ul1+vol))**0.5 
      if GEH > 0.0 : 
       a[i]=GEH 
       rec[i] = i 
       i=i+1 
       print(i,a[i],rec[i],GEH) 
f.close() 
f1.close() 

よろしく

Razif

+0

割り当てられていないことをどのように知っていますか?どのデバッガを使ってコードをステップ実行していますか? – lit

答えて

0

今それをテストのない働かを肝炎ない場合がありますが、「なし」からなるリストを持つようにしたいように見えるので、値が一致しない場合は "GEH"、一致する場合は "else" - Statementを使用し、Noneも追加します。

import os, sys 
global rec 

def interpret_string(s): 
    if not isinstance(s, str): 
     return str(s) 
    if s.isdigit(): 
     return int(s) 
    try: 
     return float(s) 
    except ValueError: 
     return s 

f= open("turn.prn","r") 
f1=open('turn.out', 'a') 

if f.mode == 'r': 
    fl = f.readlines() 

i = 0 
a = [0.0] * 1000 
rec = [0] * 1000 

for x in fl: 
    vol = interpret_string(x[90:96]) 
    ul1 = interpret_string(x[32:40]) 
    ul2 = interpret_string(x[41:49]) 

    if vol != str(x[90:96]): 
     if vol > 0 and ul1 > 0: 
      prin = false # This will trigger the print only if the if- 
         # condition is met 
      Diff = (((ul1 - vol)/ul1) ** 2) ** 0.5 
      GEH = (((2 * (ul1-vol)**2))/(ul1+vol))**0.5 
      if GEH > 0.0 : 
       a.append(GEH) 
       prin = true 
      else : 
       a.append(None) 
      rec[i] = i 
      i=i+1 
      if prin : 
       print(i,a[i],rec[i],GEH) 
f.close() 
f1.close() 

「きれいな印刷」のおかげで申し訳ありませんが、これは私が思い付く最も簡単な方法でした。 私が言ったように、私はテストできませんでしたが、これはうまくいくと思います。

関連する問題