2017-04-25 117 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

如果甲肝没有现在测试它的posibility,但因为你似乎想拥有包括“无”的名单值如果不匹配和“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: 
      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() 

对不起,杂乱的打印“如果” - 这是我能想出的最简单的方法;)。 正如我所说,我无法测试,但我认为这可以工作。