0

我对python完全陌生。现在我正在使用 Enthought 机盖(python 2.7.3)。我在网上发布了一个问题,但后来我又遇到了另一个问题。我写了一个程序,当然遇到了错误。我也在这个论坛上发布了这个。这是我上一个问题的链接:无法解析 AttributeError: 'module' object has no attribute 'calcKappa' 我看到当我删除打印行时,在我删除这些行并保存我的数据之后很长时间,canopy 一直在打印这些输出。所以我重新启动了编辑器,现在,突然间我有了其他错误。所以我添加了一些打印行来测试它,现在程序卡在了打印行上。这是为什么?

     %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

先感谢您。

答案是我没有构造函数。谢谢您的反馈

4

3 回答 3

2

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

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

于 2013-10-15T21:12:01.327 回答
0

它可能稍后会改变,但现在它只需要将第一个值复制到列表的其余部分。模块基础模型以以下代码开头:

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
于 2013-10-16T12:50:58.040 回答
0

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

29 lamb.append(lamb[0])

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

于 2013-10-15T21:13:09.733 回答