所以,我一直在python编程,我遇到了这个非常恼人的问题。我写了一个小型矩阵库,并开始在另一个模块中使用它(例如import matrixlib)。我会发现一个bug,修复它并再次运行程序。错误仍然存在。我改变了python代码,但python似乎没有读取更改
我想扔几张打印报表来看看发生了什么,但是他们不打印。我最终发现我的更改没有用python注册。所以我开始删除.pyc文件(预编译的python),但没有帮助。
我最终放弃了,直接从矩阵库文件开始编程,但现在这个问题已经回来。我在一份印刷声明中发现了一种方法,解决了这个问题,然后把它拿出来了。但它仍然打印。我甚至在一个不同于IDLE的文本编辑器中搜索'print',但在代码中只发现了一条打印语句。
这实际上并不是一个代码问题,我可能会以某种方式破坏我的python安装。 (这只发生在我的Windows盒子,而不是我的Linux盒子)。如果你想看代码,请随意。 hiesenbug-print语句在我的代码中被注释掉,但仍然执行。
def det(self):
#Had better be a square matrix.
if self.colCount() != self.rowCount():
return None
#Are we a 1x1 matrix?
if self.colCount() == self.rowCount() == 1:
return self.a[0][0]
#Are we a 2x2 matrix?
if self.colCount() == self.rowCount() == 2:
return self.a[0][0]*self.a[1][1]-self.a[1][0]*self.a[0][1]
#Not a 2x2... so lets start recursing.
d = 0
for e in range(0,self.colCount()):
tmp = partition(self.a, 0, e)
if e%2 == 0:
d = d + self.a[0][e]*self.detRecursive(tmp)
else:
d = d - self.a[0][e]*self.detRecursive(tmp)
#print d
return d
def detRecursive(self, matrix):
m = Matrix()
m.setMatrix(matrix)
return m.det()
def partition(a, r, c):
out = []
for row in range(0, len(a)):
if r != row:
out.append([])
for col in range(0, len(a[0])):
if col != c:
out[-1].append(a[row][col])
return out
不是你的问题,但你可以使用numpy包中的矩阵。它更快,并包含您需要的所有方法:http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.html。决定因素在线性代数分组http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.det.html#numpy.linalg.det中。 leslie函数也在scipy中实现:http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.leslie.html – SiggyF 2010-11-05 23:03:39
由于它不是代码问题,为什么包含所有代码?为什么不提供显示问题的最小**代码示例? – 2010-11-05 23:22:46
这是一个课程项目,我在那里编写图书馆。至于代码,我无法打折我实际犯了一个错误的可能性。无论如何,它在一个很好的格式化代码块中...... – mamidon 2010-11-05 23:42:32