Python - 继续在'elif'语句中报告语法错误

Leo*_*eed -6 python

我是一名正在学习Python的初学程序员.在构建经典游戏'Pong!'时,我遇到了这个问题,其中Python一直告诉我,我在elif语句上有语法错误.但是,我只是找不到我的问题所在...这是我的一些代码:

def draw(canvas):
    global score1, score2, pad1_pos, pad2_pos, ball_vel, RIGHT, c
        # update ball
    '''reflections on the left wall'''
    if (ball_pos[0] == BALL_RADIUS + PAD_WIDTH) and (ball_pos in [range(pad1_pos, pad1_pos + PAD_HEIGHT)]):
        print ball_pos
        ball_vel[0] = - ball_vel[1]
        ball_vel[1] = ball_vel[1]
        c += 10

    '''scoring of paddle1'''
    elif (ball_pos[0] == BALL_RADIUS + PAD_WIDTH) and not (ball_pos in [range(pad1_pos, pad1_pos + PAD_HEIGHT)]):
        score2 += 1
        spawn_ball()
        RIGHT = False

    '''reflections on the right wall'''
    elif ball_pos[0] == (WIDTH - 1) - BALL_RADIUS - PAD_WIDTH and (ball_pos in [range(pad2_pos, pad2_pos + PAD_HEIGHT)]):
        '''remember how Python counts the values starting from 0'''
        '''the first pixel of a 600p wall is 0 and the last one is 599'''
        ball_vel[0] = - ball_vel[1]
        ball_vel[1] = ball_vel [1]
        c += 10

    '''scoring of paddle2'''
    elif ball_pos[0] == (WIDTH - 1) - BALL_RADIUS - PAD_WIDTH and not (ball_pos in [range(pad2_pos, pad2_pos + PAD_HEIGHT)]):
        score1 += 1
        spawn_ball()
        RIGHT = True

    '''reflections on the upper wall'''
    elif ball_pos[1] == BALL_RADIUS:
        ball_vel[0] = ball_vel[0]
        ball_vel[1] = - ball_vel[1]

    '''reflections on the bottom wall'''
    elif ball_pos[1] == (HEIGHT - 1) - BALL_RADIUS:
        ball_vel[0] = ball_vel[0]
        ball_vel[1] = - ball_vel[1]
Run Code Online (Sandbox Code Playgroud)

我没有粘贴我的完整绘图功能,但问题出现在我的第一个elif语句中说:"第85行:SyntaxError:错误输入('elif')".我不知道我的语法错误在哪里,好奇的是我的if语句结果没问题.我想知道我的elif语句的内容是否有效,因为它是一个相当长的内容,作为初学者,我倾向于搞乱长代码...

顺便说一句,我在这里要做的事情基本上是确定球何时应该反射以及它应该反射到哪里.因此,我使用'in'和'range'语句来设置我的桨的范围,这样球只会在它击中桨(在范围内)时反映出来.我不确定这是否是正确的方法,如果我搞砸了这里的任何事情,请告诉我.这是我在堆栈上发布的第一个问题,我只是在彻底检查了我的代码后才这样做了.对不起,问题证明是超长,但如果有人可以帮助我,我真的很感激.

Kev*_*vin 6

一个elif只能在一个if块或一个elif块后立即出现.你有一个字符串常量'''scoring of paddle1'''之间的ifelif,所以严格来说一个没有立即跟随其他.

考虑更改您的评论以使用英镑符号: #scoring of paddle1