I am trying to create a class that could check a square is magic or not. However, I have no idea about how to test each class methods in 'if name == "main":'. Such as check if the square is full and check if the square is magic, or assign a number to non-empty cell.
Please help me, thank you very much.
class MagicSquare:
def __init__(self, n):
self.square = []
self.size = n
for i in range(self.size):
row = []
for j in range(self.size):
row.append(0)
self.square.append(row)
def drawSquare(self):
print(" ", end = "")
for i in range(self.size):
print(" ", i, end = "")
print("\n +" + "-----" * self.size + "+")
for i in range(self.size):
print("",i, "| ", end = "")
for j in range(self.size):
if(self.square[i][j] == 0):
print(" . ","|", end = "")
else:
print(self.square[i][j],"|", end = "")
print("\n +"+ "-----" * self.size+ "+")
def cellsEmpty(self, row, col):
if(self.square[row][col] == 0):
return True
else:
return False
def update(self, row, col, num):
if(self.cellsEmpty(row,col)):
return False
else:
num_already_there = False
for i in range(self.size):
for j in range(self.size):
if(self.square[i][j] == num):
num_already_there = True
if(num_already_there == True):
return False
else:
self.square[i][j] = num
return True
def isFull(self):
for i in range(self.size):
for j in range(self.size):
if(cellsEmpty(i,j)):
return False
return True
def isMagic(self):
sum_list = []
sum_list.extend([sum (lines) for lines in self.square])
for col in range(self.size):
sum_list.append(sum(row[col] for row in self.square))
result1 = 0
for i in range(0,self.size):
result1 += self.square[i][i]
sum_list.append(result1)
result2 = 0
for i in range(self.size-1, -1, -1):
result2 += self.square[i][i]
sum_list.append(result2)
if len(set(sum_list)) > 1:
return False
else:
return True
if __name__ == "__main__":
mySquare = MagicSquare(3)
mySquare.drawSquare()
Aucun commentaire:
Enregistrer un commentaire