В моих зрачках - лишь мне понятный сон. В них мир видений зыбких и обманных, таких же без конца непостоянных, как дымка, что скрывает горный склон.
Конечно немного коряво, и с кучей недоработок, но таки оно считает определители, для матрицы без нулей и целыми значениями, методом гауса! А не по определению 

# -*- coding:utf-8 -*-
"""
a = [[1,2,3],
[4,5,7],
[9,8,4]]
"""
#пока работает для матрицы без нулей) Я не стал с нулями заморачиваться...
a = [[1,2,3,4,5],
[7,8,9,10,11],
[12,13,17,15,16],
[17,13,19,20,21],
[22,3,24,7,26]]
def Gaus(matrix):
denumerator = 1 #числитель
numerator = 1 #знаменатель
for k in range(len(matrix)-1):
print "#",k #выводит номер текущего шага
mnojitel = matrix[k][k]
for string in matrix:
if (matrix.index(string) > k):
pesec = matrix[matrix.index(string)][k] # запись matrix.index(string) выдаёт номер строки string в массиве matrix
denumerator = denumerator * mnojitel
for elem in string: #немножко страшновато выгледят указатели у массивов далее)
matrix[matrix.index(string)][string.index(elem)] = elem*mnojitel - pesec*matrix[k][string.index(elem)]
print "(1/",denumerator,")*",matrix
#считаем тут по диагонали цифры, хз может было можно бы всунуть в код выше, но т.к. я об этом вспомнил в последнюю очередь - пришлось вынести)
for str in matrix:
numerator = numerator * str[matrix.index(str)]
Determinant = numerator/denumerator
print "Determinant = ", Determinant
return Determinant # функция возвращает значение, так что ей вполне можно использовать в штатном режиме)
Gaus(a) # вызываем нашу мега функцию)
raw_input("Press any key to exit")
Рауинпат в конце, не просто так, а для того что-бы можно было с ходу запустить программу в питоне под виндоус) Я конечно-же пользуюсь эклипсом и пидевом, поэтому мне рауинпат нафиг не нужен)