我正在尝试将我的 Java 类转录为 Python。最后一个是 Warshall 算法,但是当我运行应用程序时,我得到了这个错误:
C:\Python33\python.exe C:/Users/Joloch/PycharmProjects/Varios/Warshall.py
Inserte un valor para n (la matriz será cuadrada, por lo que es nxn):
3
Inserte un dato en la posición 0 0 :
Inserte un dato en la posición 0 1 :
Traceback (most recent call last):
File "C:/Users/Joloch/PycharmProjects/Varios/Warshall.py", line 93, in <module>
Warshall().main()
File "C:/Users/Joloch/PycharmProjects/Varios/Warshall.py", line 59, in main
obj.Matriz[x][y] = Dato
IndexError: list assignment index out of range
Process finished with exit code 1
这是代码,如果您能告诉我我做错了什么,我将不胜感激:
from Tools.Scripts.treesync import raw_input
class Warshall(object):
pass
Matriz = [],[]
Lado = 0
def __init__(self):
return
@classmethod
def Funcion(self, A, B, C):
if ((self.Matriz[A][B] == 1) ^ (self.Matriz[A][C] == 1) & (self.Matriz[C][B] == 1)):
return 1
else:
return 0
def main(self):
obj = Warshall()
Dato = 0
x = 0
y = 0
z = 0
Uno = 0
Dos = 0
Tres = 0
Cuatro = 0
print("Inserte un valor para n (la matriz será cuadrada, por lo que es nxn): ")
obj.Lado = int(raw_input(""))
obj.Matriz = [obj.Lado],[obj.Lado]
while x < obj.Lado:
while y < obj.Lado:
print("Inserte un dato en la posición", x, y,": ")
try:
Dato = int(raw_input())
except TypeError:
print()
obj.Matriz[x][y] = Dato
y += 1
while z <= obj.Lado - 1:
while Uno <= obj.Lado - 1:
while Dos <= obj.Lado - 1:
obj.Matriz[Uno][Dos] = obj.Funcion(Uno, Dos, z)
Dos += 1
Uno += 1
z += 1
print()
print("Matriz de adyacencia correspondiente: ")
while Tres < obj.Lado:
while Cuatro < obj.Lado:
print(obj.Matriz[Tres][Cuatro])
print()
Cuatro += 1
Tres += 1
if __name__ == '__main__':
Warshall().main()