可变语法错误

时间:2018-08-20 05:13:31

标签: python variables syntax pygame syntax-error

所以。

import pygame
import time
import random
import sys

itworks = True

pygame.init()
screen = pygame.display.set_mode((600, 600))

bootpng = pygame.image.load('bootimage.png')
bootpng = pygame.transform.scale(bootpng, (600, 600))
backgroundmenu = pygame.image.load('Menu_background.png')
backgroundmenu = pygame.transform.scale(backgroundmenu, ((600, 600))
button = pygame.image.load('technical_information_button')
button = pygame.transform.scale(infobut, ((130, 80))
screen.blit(bootpng, (0, 0))
time.sleep(3)

while itworks == True:
    screen.blit(backgroundmenu, (0, 0))
    screen.blit(tekbutton, (470, 520))
    for event in pygame.event.get():
        if ecent.type == pygame.QUIT:
            itworks = False

    #    if event.type == pygame.MOUSEBUTTONDOWN:
    # Set the x, y postions of the mouse click
    #x, y = event.pos
    #if ball.get_rect().collidepoint(x, y):

    pygame.display.flip()

pygame.quit()

是我的代码。由于某些原因,Buuut .. python在变量按钮的第15行显示“无效语法” *。我真的不知道该怎么办,我做了很多尝试,所以我希望可以从这里获得帮助:D

2 个答案:

答案 0 :(得分:2)

您需要删除一个额外的括号。

替换:button = pygame.transform.scale(infobut, (130, 80))

具有:while itworks == True

在Python中,应该始终有一个左括号和右括号。

编辑:

只需添加一下,我强烈建议您将while itworks is True替换为if。可以在此处查看更多信息:Boolean identity == True vs is True

基本上,由于相等性未比较引用,因此{{1}}语句在某些情况下可能无法提供预期的结果。这只是做事的“ pythonic”方式。

答案 1 :(得分:0)

再详细一点。

问题是您在button = pygame.transform.scale(infobut, ((130, 80))行中有多余的括号。

得到Syntax Error的原因是python认为您要键入variable=(variable_declared="in parenthesis"),这是一个语法错误。

如果您在button = pygame.transform.scale(infobut, ((130, 80))之后注释了所有代码,则会得到更具解释性的错误:

import pygame
import time
import random
import sys

itworks = True

pygame.init()
screen = pygame.display.set_mode((600, 600))

bootpng = pygame.image.load('bootimage.png')
bootpng = pygame.transform.scale(bootpng, (600, 600))
backgroundmenu = pygame.image.load('Menu_background.png')
backgroundmenu = pygame.transform.scale(backgroundmenu, ((600, 600))
##button = pygame.image.load('technical_information_button')
##button = pygame.transform.scale(infobut, ((130, 80))
##screen.blit(bootpng, (0, 0))
##time.sleep(3)
##
##while itworks == True:
##    screen.blit(backgroundmenu, (0, 0))
##    screen.blit(tekbutton, (470, 520))
##    for event in pygame.event.get():
##        if ecent.type == pygame.QUIT:
##            itworks = False
##
##    #    if event.type == pygame.MOUSEBUTTONDOWN:
##    # Set the x, y postions of the mouse click
##    #x, y = event.pos
##    #if ball.get_rect().collidepoint(x, y):
##
##    pygame.display.flip()
##
##pygame.quit()

现在,代码将引发错误SyntaxError: unexpected EOF while parsing,该错误直接由多余的括号引起。

也就是说,我实际上建议您将while itworks == True:更改为while itworks:(与@UltraGold的回答相反)。

根据this postPEP8(Python的样式指南),最“ Pythonic”的方法是while itworkswhile itworks == True:相比,实际上进一步劝阻 while itworks is True,因为这实际上是另一种测试,可能会导致意外错误(@UltraGold试图解决的问题)。