我想写一个函数,根据输入的数字返回一个包含'*'
和' '
的正方形棋盘。
预期输出应如下所示:
board_of_5 = (
' * * \n'
'* * *\n'
' * * \n'
'* * *\n'
' * * \n'
)
board_of_10 = (
' * * * * *\n'
'* * * * * \n'
' * * * * *\n'
'* * * * * \n'
' * * * * *\n'
'* * * * * \n'
' * * * * *\n'
'* * * * * \n'
' * * * * *\n'
'* * * * * \n'
)
下面是我当前的代码,它在一行中产生输出,并且在交替的行中没有偏移:
def get_playing_board(num):
string = ''
for i in range(num):
for j in range(num):
if j % 2 == 0:
string += ' '
elif j % 2 != 0:
string += '*'
print(string)
return string
get_playing_board(5)
如何引入偏移量和换行符?如何遍历行?
我的想法是根据偶数或奇数添加'*'
或空格,并对每行和每列进行循环。
但是,我不能得到预期的图表板。
2条答案
按热度按时间fdx2calv1#
进入给定行和列的内容取决于行和列索引的关系。具体来说,如果两者都是偶数或奇数(具有相同的奇偶性),则元素将是
' '
。如果它们的奇偶性不同,则元素将是'*'
。检查奇偶校验的最简单方法是使用
数字的奇偶校验位编码在最后一位:1表示偶数,0表示奇数。因此,您可以使用XOR运算符检查是否相同:
在这种情况下,
& 1
使用按位AND删除最后一位。要在每一行的末尾插入一个换行符,只需在外部循环的末尾添加:
除了手动生成每一行之外,还有一个聪明的替代方法,即生成一个比
num
长一个元素的字符串,并为每一行获取一个子集:您可以将其中一种方法编写为一行程序:
我并不特别推荐下面两种方法。
c3frrgcw2#
您可以用途:
输出: