2013-10-15 41 views
0

我對python完全陌生。現在我使用Enthought canopy(python 2.7.3)。我在網上發佈了一個問題,但後來我又遇到了另一個問題。 我寫了一個程序,當然遇到了錯誤。我也在這個論壇發佈了這個。 這裏是我以前的問題的鏈接:cannot resolve AttributeError: 'module' object has no attribute 'calcKappa' 我看到,當我刪除打印線時,在刪除這些行並保存我的數據後,樹冠會長時間打印這些輸出。 所以我重新啓動了編輯器,現在,突然間我有其他錯誤。 所以我添加了一些打印線來測試它,現在程序卡在打印線上。 這是爲什麼?自我重複錯誤

 %run "C:/Users/User/Canopy files/Main.py" 
5 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
C:\Users\User\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.1.0.1371.win-x86_64\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc) 
    174    else: 
    175     filename = fname 
--> 176    exec compile(scripttext, filename, 'exec') in glob, loc 
    177  else: 
    178   def execfile(fname, *where): 

C:\Users\User\Canopy files\Main.py in <module>() 
    22  cTwo*=2 
    23  cOne*=2 
---> 24  averagepiTwo=doAll(cTwo) 
    25  averagepiOne=doAll(cOne) 
    26  if(averagepiTwo >= averagepiOne*(1-criterium)): 

C:\Users\User\Canopy files\Main.py in doAll(c) 
    12  Basismodel.setMu() 
    13  print 5 
---> 14  Basismodel.setLambda() 
    15  Basismodel.calcKappa() 
    16  Basismodel.calcSumofprob() 

C:\Users\User\Canopy files\Basismodel.py in setLambda() 
    25 
    26 def setLambda(): 
---> 27  print "test" 
    28  for i in range (c-1): 
    29   lamb.append(lamb[0]) 

IndexError: list index out of range 

謝謝你提前。

答案是我沒有構造函數。 感謝您的回覆

+0

您需要查看http://sscce.org/併發布SSCCE。 –

回答

2

首先,刪除Canopy files目錄中的*.pyc文件。解釋器應該每次都將python .py文件重新編譯爲.pyc,但有些邊界情況下舊的.pyc未被替換,並且您將得到一個回溯,其中拋出異常的行不對應於拋出異常的實際行。簡而言之,異常回溯顯示更新的.py內容,而不是執行的內容。

其次,異常很可能來自聲明lamb[0]。在撥打setLambda()之前確定lamb列表是否有值?也許你的意思是i而不是lamb[0]

0

我認爲錯誤可能是在最後一行:

29 lamb.append(lamb[0]) 

這似乎列表羊肉的第一個元素追加到羊肉本身。那是你想要做的嗎?在將它附加到羔羊之前是否已經定義了lamb [0]?在回答最後一個問題之前,考慮一下lambda是否在函數setLambda()之外定義。如果是這樣的話,那麼lambda應該被定義爲全局變量。否則,它不會在selLambda()函數的框架內存在任何可變的lamb。

0

它可能會稍後改變,但現在它只需要將第一個值複製到列表的其餘部分。 模塊basismodel以此代碼開頭:

f=0.6 #the percentage that takes the car 
c=100 #max 
sumofkappa=0 #sum of all kappa 
sumofpi=0 #sum of all probabilities (should be equal to 1) 
pi=[] 
kappa=[1.0] 
mu=[0.4] 
lamb=[0.1] #Lambda is de arrival rate