我将如何打印一个正方形的两个对角线?

问题描述 投票:0回答:4

例如,如果用户输入了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
python matrix diagonal
4个回答
1
投票
size = int(input("Size of the square: "))

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

    for j in range(size):
        if i == j:               # main diagonal
            line += "x"
        elif i + j == size - 1:  # secondary diagonal
            line += "x"
        else:
            line += "o"

    print(line)

0
投票

您可以使用numpy fill_diagonal获得更有效的方法

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')

0
投票

如果您爱上了发电机

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)])

0
投票

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

size = 3
result = []
for x in range(size)[::-1]:
    line = list("o" * size)
    line[x] = "x"
    result.append("".join(line))
print(*result)
© www.soinside.com 2019 - 2024. All rights reserved.