自重复错误

时间:2013-10-15 20:57:03

标签: python

我对python完全不熟悉。现在我正在使用Enthought冠层(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

提前谢谢。

答案是我没有构造函数。 感谢您的回复

3 个答案:

答案 0 :(得分:2)

首先,删除*.pyc目录中的Canopy files个文件。解释器应该每次都将python .py文件重新编译为.pyc,但是有一些边缘情况下旧的.pyc没有被替换,你会得到一个回溯,抛出异常的行不会对应于抛出异常的实际行。简而言之,异常回溯显示更新的.py内容,而不是已执行的内容。

其次,异常很可能来自声明lamb[0]。在调用lamb之前,您确定setLambda()列表是否包含值?也许你的意思是i而不是lamb[0]

答案 1 :(得分:0)

我认为错误可能在最后一行:

29 lamb.append(lamb[0])

似乎将list lamb的第一个元素追加到lamb本身。那是你想做的吗?在将它附加到lamb之前你定义了lamb [0]吗?在回答最后一个问题之前,请考虑是否在函数setLambda()之外定义了lamb。如果是这种情况,则应将lamb定义为全局变量。否则它在selLambda()函数的框架内不存在任何变量lamb。

答案 2 :(得分: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
相关问题