正在跳过我的代码部分(python 3)
我的程序应该检查矩阵是否是幻方。然而,它跳过了“添加对角线”和检查是否所有数字(1-16)都在表中正在跳过我的代码部分(python 3),python,python-3.x,magic-square,Python,Python 3.x,Magic Square,我的程序应该检查矩阵是否是幻方。然而,它跳过了“添加对角线”和检查是否所有数字(1-16)都在表中 ROWS=4 COLUMNS=4 def main(): tbl=[] numChecktbl=[] for i in range (ROWS): tbl.append([]) for j in range (COLUMNS): userinput=int(input("Enter a value for locat
ROWS=4
COLUMNS=4
def main():
tbl=[]
numChecktbl=[]
for i in range (ROWS):
tbl.append([])
for j in range (COLUMNS):
userinput=int(input("Enter a value for location (%d,%d): " %(i,j)))
tbl[i].append(userinput)
numChecktbl.append(userinput)
for i in range(ROWS):
for j in range(COLUMNS):
print("%3d" %tbl[i][j], end='')
print()
if (totSumRowsColumns(ROWS,COLUMNS,tbl)and totSumDiagonals(ROWS,COLUMNS,tbl)
and numInMatrix(numChecktbl)):
print("It is a magic square")
else:
print("It is not a magic square")
def totSumRowsColumns(ROWS,COLUMNS,tbl):
for i in range (ROWS):
totalrow=0
totalColumn=0
for j in range (COLUMNS):
totalColumn+=tbl[j][i]
totalrow=totalrow+tbl[i][j]
if (totalrow != 34!=totalColumn):
return False
return True
def totSumDiagonals(ROWS,COLUMNS,tbl):
totDiag1=0
totDiag2=0
for i in range (ROWS):
for j in range (COLUMNS):
totDiag1=tbl[0][3]+tbl[1][2]+tbl[2][1]+tbl[3][0]
if i==j:
totDiag2+=tbl[i][j]
if (totDiag1!=totDiag2!=34):
return False
return True
def numInMatrix(numChecktbl):
for i in range(1,17):
if i not in numChecktbl:
return False
return True
main()
由于if语句包含多个必须全部为真的条件,因此一旦一个条件为假,它就会转移到另一个条件
输入有效时,所有函数和检查都将运行。但是,当您的输入不是幻方时,
totSumRowsColumns
返回false并停止检查。由于if语句包含多个需要全部为true的条件,因此一旦一个条件为false,它就会移到另一个条件上
输入有效时,所有函数和检查都将运行。但是,当您的输入不是幻方时,
totSumRowsColumns
返回false并停止检查。我使用幻方运行了它,但它仍然返回它不是幻方。我会再次检查您的数字。这是我的测试矩阵:tbl=[[1,14,8,11],[15,4,10,5],[12,7,13,2],[6,9,3,16]
实际上,我当时运行它时一定出了问题,因为它工作正常。谢谢。我用一个魔方运行它,它仍然返回它不是魔方。我会再次检查你的数字。这是我的测试矩阵:tbl=[[1,14,8,11],[15,4,10,5],[12,7,13,2],[6,9,3,16]
实际上,我当时运行它时一定出了问题,因为它工作正常。非常感谢。