在给定行数和列数的情况下,我必须创建一个空的2D数组。空数组通过下划线显示为空,因此这将是一个空数组的示例(每行有4个下划线):
____
____
____
以下是我的代码:
def gen_table (rows, columns):
matrix = [["_"] * columns for _i in range(rows)]
return matrix
所以我想做的是能够在数组中绘制一个X,看起来像这样,
S___S
_S_S_
__S__
_S_S_
s___S
Z__Z
_ZZ_
_ZZ_
Z__Z
____
我尝试过多种方法,例如尝试在我想放置“s”的位置弹出,但似乎没有任何工作。
知道如何在数组中绘制X?
答案 0 :(得分:3)
好的,让我们来看看这个
nrows = 5
ncols = 5
mark = "X"
space = "_"
the_matrix = []
现在设置我们所有的变量让我们做的事情
for i in range(nrows//2): #loop through the first half of rows
the_matrix.append([space]*ncols) # the default row
idx1,idx2 = i , ncols - 1 - i #left and right indexes
the_matrix[-1][idx1] = the_matrix[-1][idx2] = mark #set our indices
你去了你现在有半个X ......我会留下它作为练习让你找出下半部分
答案 1 :(得分:2)
如果矩阵始终是具有奇数维的方阵,则:
>>> from pprint import pprint
>>> def gen_table (rows, columns):
matrix = [["_"] * columns for _i in range(rows)]
#Indexes of first diagonal
diag1 = [(i, i) for i in xrange(rows)]
#Indexes of second diagonal
diag2 = [(rows-i-1, i) for i in xrange(rows)]
#Iterate over the indexes from diag1 and diag2 and modify matrix
for i, j in diag1 + diag2:
matrix[i][j] = 'S'
return matrix
...
>>> pprint(gen_table(5,5))
[['S', '_', '_', '_', 'S'],
['_', 'S', '_', 'S', '_'],
['_', '_', 'S', '_', '_'],
['_', 'S', '_', 'S', '_'],
['S', '_', '_', '_', 'S']]
>>> pprint(gen_table(7,7))
[['S', '_', '_', '_', '_', '_', 'S'],
['_', 'S', '_', '_', '_', 'S', '_'],
['_', '_', 'S', '_', 'S', '_', '_'],
['_', '_', '_', 'S', '_', '_', '_'],
['_', '_', 'S', '_', 'S', '_', '_'],
['_', 'S', '_', '_', '_', 'S', '_'],
['S', '_', '_', '_', '_', '_', 'S']]
具有均匀尺寸的方阵的输出:
>>> pprint(gen_table(6,6))
[['S', '_', '_', '_', '_', 'S'],
['_', 'S', '_', '_', 'S', '_'],
['_', '_', 'S', 'S', '_', '_'],
['_', '_', 'S', 'S', '_', '_'],
['_', 'S', '_', '_', 'S', '_'],
['S', '_', '_', '_', '_', 'S']]
答案 2 :(得分:0)
print("*" * 10) # to let you see any errors
input_size = int(input("Minimum of 3 lines. How many lines do you want to see : "))
size = (3 + input_size - 3)
i = 0
j = (input_size - 1)
for row in range(size) :
for col in range(size) :
if row == i and col == j :
print("*", end = "")
j -= 1
i += 1
elif row == col :
print("*", end = "")
else :
print(end = " ")
print()