(Pygame) Python 在“:”上表示 "invalid syntax",但仅在特定脚本中
(Pygame) Python says "invalid syntax" on a " : ", but only in a specific script
首先,对于这个可能是一个非常菜鸟的问题,我深表歉意。
话虽如此,我想了解为什么 Python 有时会在脚本中以“:”为目标并抛出 "invalid syntax" 错误。它通常发生在我向脚本添加一些东西之后,然后它一直说在 "if" 语句之后放置一个“:”是错误的。
为了验证这是如何发生的,我创建了一个不同的 "if" 语句来放置旧语句所在的位置,但错误仍然发生。我还尝试将 "if" 语句复制粘贴到另一个脚本中,并且成功了。
for event in pygame.event.get():
上面的行位于以下脚本的第 35 行:
import pygame, sys
display_width = 800
display_height = 600
BLUE = (0,0,255)
DISPLAY = pygame.display.set_mode ((display_width,display_height))
Player_img = pygame.image.load("spacecore.png")
clock = pygame.time.Clock()
Player_Img = pygame.image.load("role.png")
def game_loop():
Game = True
while Game == True:
pygame.display.update()
DISPLAY.fill(BLUE)
clock.tick(60)
def player(x,y):
DISPLAY.blit(Player_Img,(x,y))
mod_x = mod_y = 0
x += mod_x
y += mod_y
player((10,100)
for event in pygame.event.get():
if event.type == pygame.key.get_pressed():
if event.key == pygame.K_LEFT:
mod_x = 3
elif event.key == pygame.K_LEFT:
mod_x = 3
elif event.key == pygame.K_LEFT:
mod_x = 3
elif event.key == pygame.K_LEFT:
mod_x = 3
else:
mod_x = mod_y = 0
if event.type == pygame.QUIT:
Game = False
game_loop()
pygame
您在这里缺少右括号:
player((10,100)
当一行中有未闭合的括号 (()
[]
{}
) 时,python 将解释以下行,因为它们都写在同一个线。通过这种方式,您可以在多行中中断大型数组初始化或带有大量参数的函数调用,而无需 转义每行末尾的换行符.
你可以这么写:
max(
[1, 2, 3, 4, 5],
key=math.sin
)
而不是这个:
max( \
[1, 2, 3, 4, 5], \
key=math.sin \
)
Hovewer,在你的情况下,它隐藏了真正的语法错误,并产生了一个错误的错误,:
是第一个不能写在函数调用的参数列表中的术语。 ((10, 100) for event in pygame.event.get()
) 之前的术语可能是一个 生成器表达式 ,如果冒号不存在,这就是为什么它在冒号上失败而不是在缺少的括号上失败。
首先,对于这个可能是一个非常菜鸟的问题,我深表歉意。
话虽如此,我想了解为什么 Python 有时会在脚本中以“:”为目标并抛出 "invalid syntax" 错误。它通常发生在我向脚本添加一些东西之后,然后它一直说在 "if" 语句之后放置一个“:”是错误的。
为了验证这是如何发生的,我创建了一个不同的 "if" 语句来放置旧语句所在的位置,但错误仍然发生。我还尝试将 "if" 语句复制粘贴到另一个脚本中,并且成功了。
for event in pygame.event.get():
上面的行位于以下脚本的第 35 行:
import pygame, sys display_width = 800 display_height = 600 BLUE = (0,0,255) DISPLAY = pygame.display.set_mode ((display_width,display_height)) Player_img = pygame.image.load("spacecore.png") clock = pygame.time.Clock() Player_Img = pygame.image.load("role.png") def game_loop(): Game = True while Game == True: pygame.display.update() DISPLAY.fill(BLUE) clock.tick(60) def player(x,y): DISPLAY.blit(Player_Img,(x,y)) mod_x = mod_y = 0 x += mod_x y += mod_y player((10,100) for event in pygame.event.get(): if event.type == pygame.key.get_pressed(): if event.key == pygame.K_LEFT: mod_x = 3 elif event.key == pygame.K_LEFT: mod_x = 3 elif event.key == pygame.K_LEFT: mod_x = 3 elif event.key == pygame.K_LEFT: mod_x = 3 else: mod_x = mod_y = 0 if event.type == pygame.QUIT: Game = False game_loop() pygame
您在这里缺少右括号:
player((10,100)
当一行中有未闭合的括号 (()
[]
{}
) 时,python 将解释以下行,因为它们都写在同一个线。通过这种方式,您可以在多行中中断大型数组初始化或带有大量参数的函数调用,而无需 转义每行末尾的换行符.
你可以这么写:
max(
[1, 2, 3, 4, 5],
key=math.sin
)
而不是这个:
max( \
[1, 2, 3, 4, 5], \
key=math.sin \
)
Hovewer,在你的情况下,它隐藏了真正的语法错误,并产生了一个错误的错误,:
是第一个不能写在函数调用的参数列表中的术语。 ((10, 100) for event in pygame.event.get()
) 之前的术语可能是一个 生成器表达式 ,如果冒号不存在,这就是为什么它在冒号上失败而不是在缺少的括号上失败。