+ 不支持的操作数类型:'NoneType' 和 'complex' 错误,而两者都是复数
unsupported operand type(s) for +: 'NoneType' and 'complex' error while both are complex
我在比较 2 个复数的操作数时遇到错误。我确定两者都是复数,因为当我将鼠标悬停在 VS Code 中的变量时,它在每个实例中都清楚地显示 'Complex'。
所以我创建了以下内容class
class Snake(object):
def __init__(self):
self.pos = [random.randint(1, (width-sqr_size)/sqr_size)*sqr_size,
random.randint(1, (height-sqr_size)/sqr_size)*sqr_size]
self.mov = 1 + 0j
self.body = [self.pos[:]]
def move(self, key): #Snake movement
if key + self.mov != 0 + 0j:
self.mov = copy.copy(key)
self.pos += self.mov*SPEED
self.body.insert(0, self.pos[:])
和以下函数
def whatkey(event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
return (-1 + 0j)
if event.key == pygame.K_RIGHT:
return (1 + 0j)
if event.key == pygame.K_UP:
return (0 + 1j)
if event.key == pygame.K_DOWN:
return (0 - 1j)
我这样称呼他们
key1 = 0 + 0j
key1 = whatkey(event)
snake.move(key1)
问题应该出在 if copy.copy(key) + self.mov != 0 + 0j:
中的操作 '+'
当我尝试 运行 我的游戏时,标题中出现以下错误。
unsupported operand type(s) for +: 'NoneType' and 'complex'
我不明白,key1 总是一个复数,它从来不是 None
按如下方式更改您的代码,您将看到您的错误:
def whatkey(event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
return (-1 + 0j)
if event.key == pygame.K_RIGHT:
return (1 + 0j)
if event.key == pygame.K_UP:
return (0 + 1j)
if event.key == pygame.K_DOWN:
return (0 - 1j)
print("event.key is ", event.key)
print("Crap... I have to return None!")
# code ends now and python returns whatkey(event) = None
我在比较 2 个复数的操作数时遇到错误。我确定两者都是复数,因为当我将鼠标悬停在 VS Code 中的变量时,它在每个实例中都清楚地显示 'Complex'。
所以我创建了以下内容class
class Snake(object):
def __init__(self):
self.pos = [random.randint(1, (width-sqr_size)/sqr_size)*sqr_size,
random.randint(1, (height-sqr_size)/sqr_size)*sqr_size]
self.mov = 1 + 0j
self.body = [self.pos[:]]
def move(self, key): #Snake movement
if key + self.mov != 0 + 0j:
self.mov = copy.copy(key)
self.pos += self.mov*SPEED
self.body.insert(0, self.pos[:])
和以下函数
def whatkey(event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
return (-1 + 0j)
if event.key == pygame.K_RIGHT:
return (1 + 0j)
if event.key == pygame.K_UP:
return (0 + 1j)
if event.key == pygame.K_DOWN:
return (0 - 1j)
我这样称呼他们
key1 = 0 + 0j
key1 = whatkey(event)
snake.move(key1)
问题应该出在 if copy.copy(key) + self.mov != 0 + 0j:
当我尝试 运行 我的游戏时,标题中出现以下错误。
unsupported operand type(s) for +: 'NoneType' and 'complex'
我不明白,key1 总是一个复数,它从来不是 None
按如下方式更改您的代码,您将看到您的错误:
def whatkey(event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
return (-1 + 0j)
if event.key == pygame.K_RIGHT:
return (1 + 0j)
if event.key == pygame.K_UP:
return (0 + 1j)
if event.key == pygame.K_DOWN:
return (0 - 1j)
print("event.key is ", event.key)
print("Crap... I have to return None!")
# code ends now and python returns whatkey(event) = None