Escolher o que executa
Até agora cada linha executava, de cima para baixo. Uma instrução if executa um bloco de código apenas quando uma condição é True. Acrescente elif («senão se») para outras condições e else para todo o resto. O Python as verifica em ordem e executa só o primeiro bloco cuja condição for verdadeira. Cada linha de condição termina com dois-pontos.
position, target = 100, 250
if target > position:
print("buy", target - position) # buy 150
elif target < position:
print("sell", position - target)
else:
print("hold")A indentação é a estrutura
As linhas recuadas sob o if formam o bloco que pertence a ele; a primeira linha que volta à margem esquerda está fora. Use quatro espaços por nível, sempre do mesmo jeito. O Python não tem chaves: a indentação é a estrutura, então uma indentação errada muda o que o programa faz.
# 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 marginA ordem importa: a primeira correspondência vence
Como só o primeiro ramo verdadeiro executa, uma escada de elif pode usar limites: cada ramo só precisa dizer o que é novo. Uma tabela de taxas é um caso clássico. Coloque primeiro a condição mais estreita ou específica; do contrário, uma ampla acima dela engole o 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 cedo
Dentro de uma função, return encerra a função na hora. Assim você trata cada caso com seu próprio if e return, sem else nem aninhamento profundo; a última linha é o padrão. O código escrito assim fica plano e se lê como uma lista de regras.
# 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 holdUma escolha em uma linha
Quando um if só escolhe entre dois valores, uma expressão condicional é mais curta: value_if_true if condition else value_if_false. É uma expressão, então pode ficar dentro de uma f-string ou de um return. Use-a para escolhas simples e um if normal assim que houver mais a fazer.
# A one-line choice between two values
cash = 40.0
status = "ok" if cash >= 0 else "overdrawn"
print(status) # okis_open já é um booleano, escreva if is_open: e if not is_open:. if is_open == True: diz a mesma coisa de forma mais desajeitada. O mesmo vale para if x: com números e texto: testa «diferente de zero» e «não vazio».- Dois resultados:
if/else, ou uma expressão condicional de uma linha. - Várias faixas ordenadas: uma escada de
elif, com a condição mais estreita primeiro. - Casos especiais e entradas inválidas:
returnantecipados e o caso normal por último.
A seguir: laços for e range, para repetir um bloco de código uma vez para cada item.
Lab: o que é avaliado
- Decidir comprar, vender ou manter com
order_side25 pts - Escolher a taxa conforme o volume com
fee_tier25 pts - Manter um valor entre dois limites com
clamp25 pts - Transformar duas médias em um sinal com
crossover_signal25 pts