Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的奇数sytax错误:无效语法_Python_Syntax - Fatal编程技术网

python中的奇数sytax错误:无效语法

python中的奇数sytax错误:无效语法,python,syntax,Python,Syntax,所以无论出于什么原因,我总是会遇到语法错误,我似乎不知道为什么。当我注释掉它传播的错误所在的行时,但当我将麻烦的部分放入一个新文件中时,它会继续传播,从语法上看,我在所有代码的上面或下面都没有看到任何错误 def removeBlock(pos, blocks): return blocks[pos] -= 1 def addBlock(pos, blocks): return blocks[pos] += 1 def left(pos): return pos -= 1

所以无论出于什么原因,我总是会遇到语法错误,我似乎不知道为什么。当我注释掉它传播的错误所在的行时,但当我将麻烦的部分放入一个新文件中时,它会继续传播,从语法上看,我在所有代码的上面或下面都没有看到任何错误

def removeBlock(pos, blocks):
    return blocks[pos] -= 1
def addBlock(pos, blocks):
    return blocks[pos] += 1
def left(pos):
    return pos -= 1
def right(pos):
    return pos += 1
def done():
    return "quit"

actions = {
    "P": removeBlock,
    "D": addBlock,
    "L": left,
    "R": right,
    "X": done
}
错误是:

SyntaxError:无效语法


它出现在代码的第二行。

Python
-=
操作符没有给出返回值。也适用于
+=

尝试:

还是你不想换街区

def removeBlock(pos, blocks):
    return blocks[pos] - 1

不能返回类似于
返回块[pos]-=1
的赋值操作。返回
返回块[pos]-1
或使用此
块[pos]=1
然后返回块[pos]

请试试这个:

def removeBlock(pos, blocks):
    blocks[pos] -= 1
    return blocks[pos]
def addBlock(pos, blocks):
    blocks[pos] += 1
    return blocks[pos]
def left(pos):
    pos -= 1
    return pos
def right(pos):
    pos += 1
    return pos
def done():
    return "quit"

actions = {
    "P": removeBlock,
    "D": addBlock,
    "L": left,
    "R": right,
    "X": done
}

我已经用两行代码尝试过了,这两行代码都是这样做的,并将块移动到返回的位置,但这只会使错误进一步向下传播,直到我在更大的范围内声明pos=0code@user3630096-您必须修复所有
返回的内容-=
(和+=)。我在您发布的代码中看不到
pos=0
。对于这段代码,它只是将语法问题向下移动到返回的pos-=1@user3630096-是的,您需要修复代码中出现的所有此问题。我只是解释了什么是不正确的。好吧,我明白了,我是瞎的,对不起,你不能返回
赋值操作
,比如
返回块[pos]-=1
。返回
returnblocks[pos]-1
或者使用这个
blocks[pos]=1
then
returnblocks[pos]
。我看到你在使用同样的返回语句。请在所有功能中进行更改。
def removeBlock(pos, blocks):
    blocks[pos] -= 1
    return blocks[pos]
def addBlock(pos, blocks):
    blocks[pos] += 1
    return blocks[pos]
def left(pos):
    pos -= 1
    return pos
def right(pos):
    pos += 1
    return pos
def done():
    return "quit"

actions = {
    "P": removeBlock,
    "D": addBlock,
    "L": left,
    "R": right,
    "X": done
}