我是python的新手,我正在努力学习它。我一直在尝试制作一个简单的脚本,在脚本中输入一个数字n,表示矩阵的行数和列数。之后,矩阵应该在对角线上具有"0"*"并且在边缘上#"剩下的都是空位。我一直在尝试这样的东西,但它并没有真正起作用:
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
#####
#* *#
# * #
#* *#
#####
任何帮助都将不胜感激!
附言:我试着在网上搜索了很多解决方案,但很多人都在使用numpy。我想做得很简单,这样我就可以先学习基础知识了。
您将列表视为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='')
#####
#* *#
# * #
#* *#
#####
这是每次迭代的输出。
# #
#
## #
#* *#
##
### #
#* *#
# * #
###
#####
#* *#
# * #
#* *#
####
#####
#* *#
# * #
#* *#
#####