python 3.5.0:::幻方

python 3.5.0:::幻方,python,python-3.x,matrix,random,vector,Python,Python 3.x,Matrix,Random,Vector,我正试图建造一个神奇的广场: 幻方是分为行和列的,每个位置都有一个数字,并且行、列和对角线的总和是相同的。 示例(3x3-从1到9的数字): 8 3 4 1 5 9 672 我尝试使用一个矩阵3x3和一个有9个索引的向量 import random #j(column) matriz = [[1, 2, 3],#i(row) [4, 5, 6], [7, 8, 9]] res = False #DEFINE A FUNCTI

我正试图建造一个神奇的广场:

幻方是分为行和列的,每个位置都有一个数字,并且行、列和对角线的总和是相同的。 示例(3x3-从1到9的数字):

8 3 4

1 5 9

672

我尝试使用一个矩阵3x3和一个有9个索引的向量

import random
                #j(column)
matriz = [[1, 2, 3],#i(row)
          [4, 5, 6],
          [7, 8, 9]]
res = False
#DEFINE A FUNCTION TO CALCULATE ALL SUMS OF ALL SIDES
def magicsquare():
    if matriz[0][0] + matriz[1][0] + matriz[2][0] == matriz[0][1] + matriz[1][1] + matriz[2][1] == matriz[0][2] + matriz[1][2] + matriz[2][2] == matriz[0][0] + matriz[0][1] + matriz[0][2] == matriz[1][0] + matriz[1][1] + matriz[1][2] == matriz[2][0] + matriz[2][1] + matriz[2][2] == matriz[0][0] + matriz[1][1] + matriz[2][2] == matriz[0][2] + matriz[1][1] + matriz[2][0]:
        return res = True
    else:
        return res = False

#DEFINE A LOOP TO GENERATE RANDOM NUMBER UNTIL FIND THE ONES THAT
#SATISFY THE CONDITIONS OF A MAGIC SQUARE
seq = [1, 2, 3, 4, 5, 6, 7, 8, 9]
while res == False:
    for i in range(2):
        for j in range(2):
            z = random.choice(seq)
            matriz[i][j] = z
            x = seq.index(z)
            seq[x] = []
    magicsquare()
print (matriz)
#---------------------------------------------------------------------------------------------------------------------------------------------------------------
res = False
def magicsquare():
    if vetor[0] + vetor[1] + vetor[2] == vetor[3] + vetor[4] + vetor[5] == vetor[6] + vetor[7] + vetor[8] == vetor[0] + vetor[3] + vetor[6] == vetor[1] + vetor[4] + vetor[7] == vetor[2] + vetor[5] + vetor[8] == vetor[0] + vetor[4] + vetor[8] == vetor[2] + vetor[4] + vetor[6]:
        return res == True
    else:
        return res == False
#        0  1  2  3  4  5  6  7  8
vetor = [1, 2, 3, 4, 5, 6, 7, 8, 9]
seq =   [1, 2, 3, 4, 5, 6, 7, 8, 9]
if res == False:
    for i in range(8):
        w = random.choice(seq)
        #Replace the value w in index i
        vetor.insert(i, w)
        #Eliminate the valyes already used
        x = seq.index(w)
        seq[x] =[]
    magicsquare()
print (vetor)
结果总是:[1,2,3,4,5,6,7,8,9]

有谁能帮我建立一个魔方,告诉我我的代码有什么问题吗?
使用Python 3.5.0时,您的随机化代码是错误的

>>> 
Traceback (most recent call last):
  File "C:/Users/xiao/Desktop/ms.py", line 20, in <module>
    magicsquare()
  File "C:/Users/xiao/Desktop/ms.py", line 5, in magicsquare
    if vetor[0] + vetor[1] + vetor[2] == vetor[3] + vetor[4] + vetor[5] == vetor[6] + vetor[7] + vetor[8] == vetor[0] + vetor[3] + vetor[6] == vetor[1] + vetor[4] + vetor[7] == vetor[2] + vetor[5] + vetor[8] == vetor[0] + vetor[4] + vetor[8] == vetor[2] + vetor[4] + vetor[6]:
TypeError: unsupported operand type(s) for +: 'int' and 'list'
>>> vetor
[9, 4, 8, 2, 3, [], [], [], 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 
另一种方法是
返回
magicsquare
中的条件:

def magicsquare():
    global res
    if ...:
        res = True
    else:
        res = False
import random

vetor = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def magicsquare():
    return vetor[0]+vetor[1]+vetor[2]==\
           vetor[3]+vetor[4]+vetor[5]==\
           vetor[6]+vetor[7]+vetor[8]==\
           vetor[0]+vetor[3]+vetor[6]==\
           vetor[1]+vetor[4]+vetor[7]==\
           vetor[2]+vetor[5]+vetor[8]==\
           vetor[0]+vetor[4]+vetor[8]==\
           vetor[2]+vetor[4]+vetor[6]

while not magicsquare():
    random.shuffle(vetor)

print (vetor)

你的随机代码是错误的

>>> 
Traceback (most recent call last):
  File "C:/Users/xiao/Desktop/ms.py", line 20, in <module>
    magicsquare()
  File "C:/Users/xiao/Desktop/ms.py", line 5, in magicsquare
    if vetor[0] + vetor[1] + vetor[2] == vetor[3] + vetor[4] + vetor[5] == vetor[6] + vetor[7] + vetor[8] == vetor[0] + vetor[3] + vetor[6] == vetor[1] + vetor[4] + vetor[7] == vetor[2] + vetor[5] + vetor[8] == vetor[0] + vetor[4] + vetor[8] == vetor[2] + vetor[4] + vetor[6]:
TypeError: unsupported operand type(s) for +: 'int' and 'list'
>>> vetor
[9, 4, 8, 2, 3, [], [], [], 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 
另一种方法是
返回
magicsquare
中的条件:

def magicsquare():
    global res
    if ...:
        res = True
    else:
        res = False
import random

vetor = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def magicsquare():
    return vetor[0]+vetor[1]+vetor[2]==\
           vetor[3]+vetor[4]+vetor[5]==\
           vetor[6]+vetor[7]+vetor[8]==\
           vetor[0]+vetor[3]+vetor[6]==\
           vetor[1]+vetor[4]+vetor[7]==\
           vetor[2]+vetor[5]+vetor[8]==\
           vetor[0]+vetor[4]+vetor[8]==\
           vetor[2]+vetor[4]+vetor[6]

while not magicsquare():
    random.shuffle(vetor)

print (vetor)

有帮助吗?这很酷,但我也想看看我的代码有什么错,看看:它有用吗?这很酷,但我想知道我的代码有什么问题,还想看看: