所以,我一直在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