Program debugging (python) - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Homework (https://python-forum.io/forum-9.html) +--- Thread: Program debugging (python) (/thread-15429.html) |
Program debugging (python) - abdullahali - Jan-17-2019 Hello, I am trying to create a program that asks user for sequence of 9 numbers and then verifies if they . make a magic square or not. Magic square requirments: rows, coumns and diagonal all sum up to 15 each, and no number is repeated. When I run and enter [1, 2, 3, 4, 5, 6, 7, 8, 9] I get an error code. N = 3 # Returns true if mat[][] is magic # square, else returns false. def is_magic(square): # calculate the sum of # the prime diagonal sum = 0 for i in range(0, N): sum= sum + square[i][i] # For sums of Rows for i in range(0, N): rowsum = 0 for j in range(0, N): rowsum += square[i][j] # check if every row sum is # equal to prime diagonal sum if (rowsum != sum): return False # For sums of Columns for i in range(0, N): columnsum = 0 for j in range(0, N): columnsum += square[j][i] # check if every column sum is # equal to prime diagonal sum if sum != columnsum: return False return True str_input = input("write a squence of nine numbers") str_list = str_input.split() square = [] for i in range(0, N): square.append([]) for j in range(0, N): square[i].append(str(str_list[j + i * N])) if is_magic(str_list): print("This is Magic Square") else: print("This is Not a magic Square")
RE: Program debugging (python) - ichabod801 - Jan-17-2019 I don't get that error. I get a later error on line 11, because you never convert the strings to integers. I think you want to replace the str call on line 47 to an int call. And you need to be careful about your input. If you don't input 9 numbers with spaces in between them, you'll get the error you got. RE: Program debugging (python) - abdullahali - Jan-17-2019 (Jan-17-2019, 04:01 AM)ichabod801 Wrote: I don't get that error. I get a later error on line 11, because you never convert the strings to integers. I think you want to replace the str call on line 47 to an int call. And you need to be careful about your input. If you don't input 9 numbers with spaces in between them, you'll get the error you got. I replace str with int and now the line looks like this. square[i].append(int(str_list[j + i * N])) However, when i input 1 2 3 4 5 6 7 8 9 i get this error: for line 11 TypeError: unsupported operand type(s) for +: 'int' and 'str' RE: Program debugging (python) - ichabod801 - Jan-17-2019 That's because you are checking is_magic(str_list) . That should be is_magic(square) .
RE: Program debugging (python) - abdullahali - Jan-17-2019 (Jan-17-2019, 04:22 AM)ichabod801 Wrote: That's because you are checking Oh my god... i dont know how to thank you enough... RE: Program debugging (python) - ichabod801 - Jan-17-2019 (Jan-17-2019, 04:26 AM)abdullahali Wrote: i dont know how to thank you enough... A duffel bag full of small bills usually works. |