2011-10-15 16 views
5

Duplicar posibles:
Python Ternary Operator¿Hay '?' Control de flujo en Python?

¿Existe control del operador de flujo similar a '?' de C/C++ en python?

Si hay un trozo de código similar al siguiente:

return n <= 1 ? n : fibo(n-1) + fibo(n-2) 

Will consiguió un error como este:

File "fibonacci.py", line 2 
    return n <= 1 ? n : fibo(n-1) + fibo(n-2) 
       ^
SyntaxError: invalid syntax 
+2

Esto se llama "ternario" –

+5

Puede llamarse incorrectamente; Toma tres operandos y por lo tanto es ternario de la misma manera que la adición es binaria. Ocurre que no hay muchos operadores ternarios en python u otros descendientes de algol. Esto se identifica de forma única como en la respuesta de phihag como "Expresión condicional" – SingleNegationElimination

Respuesta

12

Sí, la expresión condicional es available in Python 2.5+:

return n if n <= 1 else fibo(n-1) + fibo(n-2) 
+6

Lo que hay que tener en cuenta es que la condición está en el medio de la versión de python de esto. Los idiomas similares a C tienen '? : 'pero Python tiene la mayor fluidez' si demás ' – SingleNegationElimination

4

Puede probar esta expresión de cortocircuito return n > 1 and fibo(n-1) + fibo(n-2) or n. Si bien esta no es la declaración ternaria, es concisa y cumple su función en este escenario.

+0

No creo que esto funciona para' n == 0' –

+0

@NeilG actualizado mi respuesta. Gracias por señalar. –

Cuestiones relacionadas