If语句的语法错误无效

2024-03-29 04:48:21 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,当我尝试运行这个函数时,第二个if语句的语法无效,突出显示了冒号。我不明白为什么会这样,据我所知,它们基本上是一样的。那么为什么第二个if语句返回无效语法,而第一个却没有呢?在

for event in pygame.event.get():
    if event.type == MOUSEBUTTONDOWN :           
        if ROption1Exists == True:
            rx, ry = event.pos
            if rx >= (100*((X+3)+1)) and rx <= (100*((X+3)+2)) and ry >= (100*(Y+1)) and ry <= (100*(Y+2)):
                print('babies')
                VarReset()
                Pos = ((X+3), Y)
        if ROption2Exists == True:
            rx, ry = event.pos
            if rx >= (100*((X-3)+1)) and rx <= (100*((X-3)+2)) and ry >= (100*((Y+1)) and ry <= (100*(Y+2)):
                print('babies')
                VarReset()
                Pos = ((X-3), Y)

Tags: and函数poseventtrueif语法语句
2条回答

您有一个括号平衡问题:

if rx >= (100*((X-3)+1)) and rx <= (100*((X-3)+2)) and ry >= (100*((Y+1)) and ry <= (100*(Y+2)):
#        1    23   2  10           1    23   2  10           1    23   21           2    3   21
#                      ^ all closed              ^ all closed           ^ uhoh

你有一个左括号太多,或一个右括号太少。在

你可以把所有的括号都删减一点,以下就足够了:

^{pr2}$

您可以chain the comparison operators

if 100*(X-1) >= rx >= 100*(X-2) and 100*(Y+2) >= ry >= 100*(Y+1):

其中100*(X-1) >= rx >= 100*(X-2)在逻辑上与100*(X-1) >= rx and rx >= 100*(X-2)相同,但是{}只计算一次;您所要做的就是通过交换操作数来反转{}运算符。在

请注意,True的相等性测试很少需要;只需从if语句中删除== True

if ROption1Exists:

你少了一个括号:

if rx >= (100*((X-3)+1)) and rx <= (100*((X-3)+2)) and ry >= (100*((Y+1)) and ry <= (100*(Y+2)):
#                                                                       ^
#                                                                     HERE

相关问题 更多 >