1

私のプログラムは、行列が魔方陣かどうかをチェックすることになっています。ただし、「対角線の追加」と、すべての数値 (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 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()
4

1 に答える 1

0

if ステートメントには、すべて true になる必要がある複数の条件が含まれているため、1 つが false になるとすぐに、else に移動します。

入力が有効な場合、すべての機能とチェックが実行されます。ただし、入力が魔方陣でない場合totSumRowsColumnsは false を返し、チェックは中止されます。

于 2015-10-08T00:51:50.267 に答える