Coock7
Coock7

Reputation: 33

IndentationError: expected an indented block, python (if/else)

I can't find the error

def free_car(lane_a,lane_b,lane_c):
    cars_a = len(lane_a)
    cars_b = len(lane_b)
    cars_c = len(lane_c)

    if cars_c >= 7:
        #free_1_c
        if cars_a >= cars_b:
            #free_1_a
            #free_1_b
        else:
            #free_1_b
            #free_1_a
    elif cars_a >= cars_b:
        #free_1_a
        if cars_b > cars_c:
            #free_1_b
            #free_1_c
        else:
            #free_1_c
            #free_1_b
    elif cars_b > cars_a and cars_b > cars_c:
        #free_1_b
        if cars_a > cars_c:
            #free_1_a
            #free_1_c
        else:
            #free_1_c
            #free_1_a
    else:
        #we

The error starts on the line 11 (on the else after cars_c >= 7) I know its a stupid error and question but i can't figure it out why the error it's there

Upvotes: 1

Views: 563

Answers (3)

Daniel Roseman
Daniel Roseman

Reputation: 599490

You only have comments inside those if and else blocks. That's not syntactically valid; you need an executable statement of some kind. You can use pass if there's nothing better, although in real code it's usually preferable to refactor so that the empty block isn't necessary.

Upvotes: 0

qmorgan
qmorgan

Reputation: 4894

Python requires a statement after each clause. If you want it to do nothing, simply write the word pass

if cars_c >= 7:
    #free_1_c
    if cars_a >= cars_b:
        pass
        #free_1_a
        #free_1_b
    else:
        pass
        #free_1_b
        #free_1_a
elif cars_a >= cars_b:
    #free_1_a
    if cars_b > cars_c:
        pass
        #free_1_b
        #free_1_c
    else:
        pass
        #free_1_c
        #free_1_b
elif cars_b > cars_a and cars_b > cars_c:
    #free_1_b
    if cars_a > cars_c:
        pass
        #free_1_a
        #free_1_c
    else:
        pass
        #free_1_c
        #free_1_a
else:
    pass
    #we

Upvotes: 0

Anthony Kong
Anthony Kong

Reputation: 40624

In a block like this:

if cars_a >= cars_b:
    #free_1_a
    #free_1_b
else:
    #free_1_b
    #free_1_a

Since both free_1_a and free_1_b are commented out, they are effectively empty to python. It is illegal.

You can resolve it by adding pass

i.e.

if cars_a >= cars_b:
    #free_1_a
    #free_1_b
    pass
else:
    #free_1_b
    #free_1_a
    pass

pass basically means 'no operation'

Upvotes: 3

Related Questions