我对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
提前谢谢。
答案是我没有构造函数。 感谢您的回复
答案 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