Python 如何打印正方形的两条对角线?

Python 如何打印正方形的两条对角线?,python,matrix,diagonal,Python,Matrix,Diagonal,例如,如果用户输入2,则输出将是xo-ox,如果用户输入3,则输出xox-oxo-xox等。到目前为止,代码只输出相反方向的正方形对角线 size = int(input("Size of the square: ")) for i in range(size): line = "" for j in range(size): if i+j == size-1: line += "x" else:

例如,如果用户输入2,则输出将是
xo-ox
,如果用户输入3,则输出
xox-oxo-xox
等。到目前为止,代码只输出相反方向的正方形对角线

size = int(input("Size of the square: "))

for i in range(size):
    line = ""

    for j in range(size):
        if i+j == size-1:
            line += "x"
        else:
            line += "o"

    print(line)
在本例中,例如,当您输入3时,您将得到以下输出:

oox
oxo
xoo
可以使用numpy实现更高效的方法

size = 3
a = np.chararray((size, size))
a[:] = 'o'
np.fill_diagonal(a, 'x')
np.fill_diagonal(np.fliplr(a), 'x')
输出

a = chararray([[b'x', b'o', b'x'],
               [b'o', b'x', b'o'],
               [b'x', b'o', b'x']], dtype='|S1')

万一你爱上了发电机

square = "\n".join(["".join(["x" if i == j or i == size - j - 1 else "o" for j in range(size)]) for i in range(size)])

您可以使用一个循环来解决它,如下所示:

size = 3
result = []
for x in range(size)[::-1]:
    line = list("o" * size)
    line[x] = "x"
    result.append("".join(line))
print(*result)

看起来你在正确的轨道上,但你只考虑了一条对角线。你有没有试过用类似的方式解释另一个问题?换句话说,什么条件定义了左上->右下对角线?是的,所以对于另一条对角线,我做了I==j作为if语句的条件,它将累加x值所有的右边,所以这不起作用吗?啊,我刚刚意识到这是一个elif语句,你必须使用,而不是if,哈哈,你可以用
if
来表示。
size = 3
result = []
for x in range(size)[::-1]:
    line = list("o" * size)
    line[x] = "x"
    result.append("".join(line))
print(*result)