Elegir qué se ejecuta
Hasta ahora se ejecutaba cada línea, de arriba abajo. Una sentencia if ejecuta un bloque de código solo cuando una condición es True. Añade elif («si no, si») para más condiciones y else para todo lo demás. Python las comprueba en orden y ejecuta solo el primer bloque cuya condición sea verdadera. Cada línea de condición termina con dos puntos.
position, target = 100, 250
if target > position:
print("buy", target - position) # buy 150
elif target < position:
print("sell", position - target)
else:
print("hold")La sangría es la estructura
Las líneas con sangría bajo el if son el bloque que le pertenece; la primera línea que vuelve al margen izquierdo queda fuera. Usa cuatro espacios por nivel, siempre igual. Python no tiene llaves: la sangría es la estructura, así que una sangría equivocada cambia lo que hace el programa.
# The indented lines are the block that belongs to the if
price = 184.5
if price > 184:
print("above 184") # above 184
print("still inside the if")
print("always runs") # back at the left marginEl orden importa: gana la primera coincidencia
Como solo se ejecuta la primera rama verdadera, una escalera de elif puede usar umbrales: cada rama solo tiene que decir lo que es nuevo. Una tarifa de comisiones es un caso clásico. Pon primero la condición más estrecha o específica; si no, una amplia por encima se traga el caso.
# elif branches are checked top to bottom; the first True wins
monthly_volume = 3_500_000
if monthly_volume < 1_000_000:
rate = 0.0010
elif monthly_volume < 10_000_000:
rate = 0.0007
else:
rate = 0.0004
print(rate) # 0.0007Retornar pronto
Dentro de una función, return termina la función en el acto. Así puedes tratar cada caso con su propio if y return, sin else ni anidación profunda; la última línea es el valor por defecto. El código escrito así se mantiene plano y se lee como una lista de reglas.
# Early returns keep a function flat
def side(position, target):
if target > position:
return "buy"
if target < position:
return "sell"
return "hold"
print(side(100, 250), side(250, 100), side(100, 100)) # buy sell holdUna elección en una línea
Cuando un if solo elige entre dos valores, una expresión condicional es más corta: value_if_true if condition else value_if_false. Es una expresión, así que puede ir dentro de una f-string o un return. Úsala para elecciones simples, y un if normal en cuanto haya más que hacer.
# A one-line choice between two values
cash = 40.0
status = "ok" if cash >= 0 else "overdrawn"
print(status) # okis_open ya es un booleano, escribe if is_open: y if not is_open:. if is_open == True: dice lo mismo de forma más torpe. Lo mismo vale para if x: con números y texto: comprueba «distinto de cero» y «no vacío».- Dos resultados:
if/else, o una expresión condicional de una línea. - Varios rangos ordenados: una escalera de
elif, la condición más estrecha primero. - Casos especiales y entradas inválidas:
returntempranos y el caso normal al final.
A continuación: los bucles for y range, para repetir un bloque de código por cada elemento.
Lab: qué se califica
- Decidir comprar, vender o mantener con
order_side25 pts - Elegir la tarifa según el volumen con
fee_tier25 pts - Mantener un valor entre dos límites con
clamp25 pts - Convertir dos medias en una señal con
crossover_signal25 pts