Python: 收到语法错误

Python: getting a SyntaxError

这是我的代码

#Chose Grid size
m = int(input("Enter the width and length of the Grid: ",))
n = m
print("Your Grid will be",m,"x",n)
Grid = np.zeros((m+2,n+2))
#Grid filling in
i = 0
while(i <= 5*m):
    i = i+1
    Grid[randint(1,m), randint(1,n)] = 1
img = pl.imshow(Grid, cmap = 'PuRd', interpolation = 'none')

SecGrid = np.zeros((m+2,n+2))
SecGrid = Grid

#Main
for i in range(1,m):
    for j in range(1,n):
        #Nbr of entities
        nbr = 0
        for k in range(-1,1):
            for l in range(-1,1):
                nbr = nbr + Grid[i+k,j+l]
        #cells that are alive
        if Grid[i,j] == 1:
            if nbr > 1 and nbr < 4:
                then SecGrid[i,j] = 1
                else SecGrid[i,j] = 0
            #cells that are dead
            else:
                if nbr == 3:
                    then SecGrid[i,j] = 1
                    else SecGrid[i,j] = 0

这是我的错误

  File "/Users/tryotest/Downloads/GameOfLife.py", line 32
    then SecGrid[i,j] = 1
               ^
SyntaxError: invalid syntax

如错误 (SyntaxError) 所示,您的语法有误。在 Python 中,if 语句构造为 if ... else ... 有关 if 语句的更多信息,请遵循 link.

https://docs.python.org/2/tutorial/controlflow.html

更一般地说,我建议阅读 Python 的一般教程,以便掌握整体语法。

if foo:
    then

是不正确的 Python 语法。删除 then。 它应该看起来像

if foo:
    dosomething
else:
    dosomethingelse

你做错了if...else。这是更正后的代码:

#Chose Grid size
m = int(input("Enter the width and length of the Grid: ",))
n = m
print("Your Grid will be",m,"x",n)
Grid = np.zeros((m+2,n+2))
#Grid filling in
i = 0
while(i <= 5*m):
    i = i+1
    Grid[randint(1,m), randint(1,n)] = 1
img = pl.imshow(Grid, cmap = 'PuRd', interpolation = 'none')

SecGrid = np.zeros((m+2,n+2))
SecGrid = Grid

#Main
for i in range(1,m):
    for j in range(1,n):
        #Nbr of entities
        nbr = 0
        for k in range(-1,1):
            for l in range(-1,1):
                nbr = nbr + Grid[i+k,j+l]
        #cells that are alive
        if Grid[i,j] == 1:
            if nbr > 1 and nbr < 4:
                SecGrid[i,j] = 1
            else:
                SecGrid[i,j] = 0
            #cells that are dead
            else:
                if nbr == 3:
                    SecGrid[i,j] = 1
                else:
                    SecGrid[i,j] = 0