IndentationError: se esperaba un bloque con sangría, python (if / else)

No puedo encontrar el 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 

El error comienza en la línea 11 (en el caso posterior después de cars_c> = 7) Sé que es un error y una pregunta estúpidos, pero no puedo entender por qué el error está ahí.

En un bloque como este:

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

Dado que tanto free_1_a como free_1_b están comentados, efectivamente están vacíos para python. Es ilegal.

Puedes resolverlo añadiendo pass

es decir

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

pass básicamente significa “sin operación”

Python requiere una statement después de cada cláusula. Si quieres que no haga nada, simplemente escribe la palabra 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 

Solo tienes comentarios dentro de esos bloques if y else. Eso no es sintácticamente válido; Necesita una sentencia ejecutable de algún tipo. Puede usar el pass si no hay nada mejor, aunque en el código real generalmente es preferible refactorizar para que el bloque vacío no sea necesario.