python实现神奇魔方阵(纵横图)
实现n行n列的神奇魔方阵
·
#练习:实现n行n列的神奇魔方阵;
#神奇魔方阵又称纵横图,一种n行n列,由自然数1至n*n组成的方阵
#方阵中每个元素都不相等
#每行,每列以及对角线,副对角线元素之和相等
#第一行最中间的位置为数字为1
#每个数所放置的行数比前一个数少一,行数比前一个数多一(在其右上方)
#如果在第一行上,则下一个数放在最后一行的下一列上
#如果当前数在最后一列上则将下一个数放在上一行的第一列上
#如果下一个数的位置已经被占用,则一个数直接放在当前位置的正下方,即放在下一行用一列上。
ls=[[0 for x in range(5)]for y in range(5)]
#创建一个5行5列的列表
x,y=0,2
#第一排中间位置为1,从1开始
for i in range(1,26):
ls[x][y]=i
if x==0 and y==4:#若是在第一行最后一个元素,则换到第二行
x+=1
continue
if x==0:#如果是在第一行,下一个数放在最后一行上
x=4
else:#如果不是在第一行,则输出下一个数在上一行
x-=1
if y==4:#如果当前数在最后一列上则将下一个数放在上一行的第一列上
y=0
else:
y+=1
if ls[x][y]!=0:#如果下一个数的位置已经被占用,则一个数直接放在当前位置的正下方,即放在下一行用一列上。
x+=2
y-=1
for i in range(5):
for j in range(5):
print("{: ^4} ".format(ls[i][j]),end="")
print()
嵌套for循环语句的列表推导式:在基本列表推导式的for循环之后添加一个for语句就实现列表推导式的嵌套循环。
具体格式如下:
[exp for x in list_1 for y in list_2]
更多推荐
已为社区贡献1条内容
所有评论(0)