2015-04-22 43 views
-1

我創建了一個程序給了我一個列表裏面的列表,然後我想打印第一個列表的第一個元素,但是當我這樣做時,我有一個錯誤,告訴我我的列表不存在...如何使用由python程序創建的數據?

我的程序是:當我ReadMatrix(int(26))後寫print(Ci[0][0])出現

def Prog1(): 
    f=open("dimer.out","r") 
    m=open("dimer3.out","w") 
    g=f.readlines() 
    for k in range(len(g)): 
     if "Molecular Orbital" in g[k]: 
      c=k 
    for n in range(c+1, len(g)): 
     m.write(g[n]) 
     if "Density Matrix" in g[n+1]: 
      break 
    def ReadMatrix(numberOfRows): 
     Ci = []; 
     for i in range(0,numberOfRows): 
      Ci.append([]); 
     f=open("dimer3.out","r") 
     lines=f.readlines() 
     numberOfBlocks = math.ceil(numberOfRows/5) 
     for i in range(0,int(numberOfBlocks)): 
      for j in range(i*(numberOfRows+3)+3, i*(numberOfRows+3)+3+numberOfRows): 
       array = re.split('\s+', lines[j]) 
       for k in range(0,len(array)): 
        if re.search("\.",array[k]) is not None: 
         Ci[j - 3 - i*(numberOfRows+3)].append(array[k]) 
    print('Ci = ',Ci) 
    ReadMatrix(int(26)) 

錯誤。 所以我的問題是,如何在程序外使用Ci列表。

+0

' 「的錯誤,當我寫的打印效果(CI [0] [0])後ReadMatrix(INT(26))」' - 據代碼貼,你從來沒有真正做到這一點... – David

+0

是的,我沒有寫,因爲它不工作... –

回答

0

將Ci傳遞給ReadMatrix。您可以在函數外的作用域中聲明Ci,使用Ci作爲參數調用ReadMatrix,然後根據需要打印Ci。

def ReadMatrix(numberOfRows,Ci): 
for i in range(0,numberOfRows): 
    Ci.append([]); 
f=open("dimer3.out","r") 
lines=f.readlines() 
numberOfBlocks = math.ceil(numberOfRows/5) 
for i in range(0,int(numberOfBlocks)): 
    for j in range(i*(numberOfRows+3)+3, i*(numberOfRows+3)+3+numberOfRows): 
     array = re.split('\s+', lines[j]) 
     for k in range(0,len(array)): 
      if re.search("\.",array[k]) is not None: 
       Ci[j - 3 - i*(numberOfRows+3)].append(array[k]) 
print('Ci = ',Ci) 
ReadMatrix(int(26)) 

Ci=[] 
Readmatrix(numRows,Ci) 

print Ci 
+0

它的工作原理!謝謝:) –

+0

接受答案,你也會得到我的謝意:) – goelakash

相關問題