当forloop插入值而不是只插入一个值时,如何将它改为在两个不同的字符之间交替?

2024-09-25 00:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建游戏Konane(this link提供游戏规则,如果你需要参考它们来更好地理解我的问题)。我已经创建了构建空数组的函数,但是我不清楚用'B''W'交替值填充网格的最佳方法是什么。与此相关的一个重要规则是,位置不能在其自身的上方、下方、左侧或右侧具有相同的值。你知道吗

下面是我当前的函数,它创建了一个空数组,我想修改它来执行上述任务:

  numrows = 3
  numcols = 4
  def empty_grid():
    return [['-' for y in range(numcols)]
        for x in range(numrows)]

Tags: 方法函数in网格游戏for规则link
1条回答
网友
1楼 · 发布于 2024-09-25 00:32:21

这就是我如何以您想要的方式实现数组初始化,然后打印它以进行验证的方法。还有其他方法来完成您正在寻找的替换;对我来说,取模2的索引之和是最符合逻辑的。你知道吗

area = empty_grid()            # get an empty_grid called area

for i in range(numrows):       # go through the rows
    for j in range(numcols):   # go through the columns
        if (i + j) % 2:        # add the indices and check for oddness
            area[i][j] = 'B'   # if odd, set to B
        else:
            area[i][j] = 'W'   # else (if even), set to W

for i in range(numrows):       # for each row
    print area[i]              # print the row

输出:

['W', 'B', 'W', 'B']
['B', 'W', 'B', 'W']
['W', 'B', 'W', 'B']

最棘手的部分是弄清楚如何在每一行上交替,并抵消每一行,使它们错开一个。您可以通过使用一个计数器变量(比如k)并每次向其中添加一个来实现这一点,尽管我最终还是会检查某个事物的均匀性/奇异性,所以我发现添加索引对我来说是最简单的理解。你知道吗

相关问题 更多 >