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

您应该使用条件 if-else 每行打印不同的模式

输入

for each_row in range(0,8):
    #use if else to print different pattern each row
    for each_column in range(0, 8):
        if each_row%2 ==0:
            print("x", end="o")
        else:
            print("o", end="x")
    print("")

输出

xoxoxoxoxoxoxoxo
oxoxoxoxoxoxoxox
xoxoxoxoxoxoxoxo
oxoxoxoxoxoxoxox
xoxoxoxoxoxoxoxo
oxoxoxoxoxoxoxox
xoxoxoxoxoxoxoxo
oxoxoxoxoxoxoxox
于 2020-11-23T13:17:04.520 回答
0

使用一些itertools生成任何大小的网格的通用解决方案。

letters = cycle('xo')创建一个迭代器,它将无限期地循环产生 'x'、'o'、'x'、'o' ...。

islice(letters, n)会给我们下n一封信。

如果网格的大小是偶数,我们需要跳过一个字母来移动下一行:我们可以这样做,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 回答
0

尝试这个:

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

或者,更优雅:

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

或者:

for each_row in range(0,8):
    print(" "*8, end="")
    print(("xo" if each_row % 2 == 0 else "ox")*8)  
于 2020-11-23T13:20:16.317 回答
0

这是您问题的干净解决方案:

figure = 'x'
for each_row in range(0,4):
    figure = 'x' if figure == 'o' else 'o'
    for each_column in range(0,6):
        print(figure,end="")
        figure = 'x' if figure == 'o' else 'o'
    print("")

使用变量来跟踪您下次要打印的图形,并根据需要将其更改为另一个。

输出:

xoxoxo
oxoxox
xoxoxo
oxoxox
于 2020-11-23T13:23:56.137 回答