谁能解释这个结果如何评估为9?试图理解“生命的康威游戏”

问题描述 投票:-1回答:1

(0-1)%60-> leftCoord =(x-1)%WIDTH(在循环的第一次迭代中,其结果为(0-1)%60)。快要结束了。

摘自《用python自动化无聊的东西》一书。我只是在这里停留在理解这个简单的表达上。对我来说并不简单。在我看来,“%”运算符应评估除法的其余部分。

这是程序中要讨论的表达式之前的部分:

导入随机,时间,副本

WIDTH = 60高度= 20

为单元格创建列表列表:

nextCells = []对于x范围(WIDTH):column = []#创建一个新列。对于范围内的y(高度):如果random.randint(0,1)== 0:column.append('#')#添加一个活细胞。其他:column.append('')#添加一个死单元。nextCells.append(column)#nextCells是列列表的列表。

while为True:#主程序循环。print('\ n \ n \ n \ n \ n')#用换行符分隔每个步骤。currentCells = copy.deepcopy(nextCells)

# Print currentCells on the screen:
for y in range(HEIGHT):
    for x in range(WIDTH):
        print(currentCells[x][y], end='') # Print the # or space.
    print() # Print a newline at the end of the row.


# Calculate the next step's cells based on current step's cells:
for x in range(WIDTH):
    for y in range(HEIGHT):
        # Get neighboring coordinates:
        # % WIDTH ensures leftCoord is always between 0 and WIDTH -1
        leftCoord  = (x - 1) % WIDTH
        rightCoord = (x + 1) % WIDTH
        aboveCoord = (y - 1) % HEIGHT
        belowCoord = (y + 1) % HEIGHT
python-3.7 operator-keyword
1个回答
0
投票

为了示例,假设您使用的是10x10的表。

当第一个数字小于第二个数字时,%运算符不太直观。尝试进入交互式python shell并运行4%10。尝试使用8%10。请注意,如何始终获得相同的数字?那是因为除法的答案是0 ...而您的整数被剩余。对于表中的大多数数字,模量根本不起作用。

现在尝试-1%10(模拟这对第一行的作用)。它给您9,指示底行。如果您运行10%10(模拟最下面的行),它将得到0,表示最上面的行。有效地,这使表“自动换行” ...第一行中的单元格影响底部,反之亦然。它还缠绕在侧面。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.