在python中填充方矩阵的对角线

时间:2020-10-26 11:47:54

标签: python

我是python的新手,正在尝试学习它。我一直在尝试制作一个简单的脚本,在该脚本中,您输入一个代表矩阵的行和列数的数字n。之后,矩阵应在对角线“ *”和边线“#”上具有其余空间。 我一直在尝试这样的事情,但实际上并没有用:

my_list=[]
n=int(input("please enter the number of lines and columns: "))
my_list[0][0:n-1]="#"
my_list[n-1][0:n-1]="#"
my_list[0:n-1][0]="#"
my_list[0:n-1][n-1]="#"
my_list[i in range(1,n-2)][j in range(1,n-2)]="*"
print (my_list)

我希望它看起来像这样:

n=5
#####
#* *#
# * #
#* *#
#####

任何帮助将不胜感激!

P.S。我尝试了很多在线搜索解决方案,但很多人都在使用numpy,我希望这样做是香草的,这样我就可以首先学习基础知识。

1 个答案:

答案 0 :(得分:1)

您正在将列表视为numpy数组,并尝试一次分配多个切片。为简单起见,只需创建一个空的NxN列表并以对称方式填写所需的单元格即可。

n = 5
my_list = [[' ' for _ in range(n)] for _ in range(n)]

for i in range(n):
    my_list[i][i]    = '*'     # primary diagonal
    my_list[i][-i-1] = '*'     # secondary diagonal  

    my_list[0][i]    = '#'     # first row
    my_list[-1][i]   = '#'     # last row
    my_list[i][0]    = '#'     # first column
    my_list[i][-1]   = '#'     # last column 
for l in my_list: print(*l, sep='')
#####
#* *#
# * #
#* *#
#####

这是每次迭代的输出。

#   #
     
     
     
#    
##  #
#* *#
     
     
##   
### #
#* *#
# * #
     
###  
#####
#* *#
# * #
#* *#
#### 
#####
#* *#
# * #
#* *#
#####