0

Python で単純なチェス盤を印刷する必要があり、8 行 8 列である必要があります。

これは私がこれまでに持っているものです:

for each_row in range(0,8):
    for each_column in range(0,8):
        print(" ", end="")
    for k in range(0, 8):
        print("x", end="o")
    print("")

次のようなものが出力されます。

xoxoxo
xoxoxo
xoxoxo
xoxoxo

しかし、私はこのようなものが欲しい:

xoxoxo
oxoxox
xoxoxo
oxoxox
4

4 に答える 4

0

いくつかのitertoolsを使用して、任意のサイズのグリッドを生成する一般的なソリューション。

letters = cycle('xo')'x', 'o', 'x', 'o' ... を無期限に生成するイテレータを作成します。

islice(letters, n)nそれから次の手紙をくれます。

グリッドのサイズが偶数の場合、次の行をシフトするために 1 文字をスキップする必要がありnext(letters)ます。

したがって、コードは次のようになります。

from itertools import cycle, islice

def grid(size):
    letters = cycle('xo')
    lines = []
    for _ in range(size):
        lines.append(''.join(islice(letters, size)))
        if size % 2 == 0:
            next(letters)
    return '\n'.join(lines)

奇数サイズの例:

print(grid(3))
​
​
xox
oxo
xox

そして偶数のサイズで:

print(grid(4))
​
​
xoxo
oxox
xoxo
oxox
于 2020-11-23T13:50:15.383 に答える