Choisir ce qui s'exécute
Jusqu'ici, chaque ligne s'exécutait, de haut en bas. Une instruction if n'exécute un bloc de code que si une condition est True. Ajoutez elif (« sinon si ») pour d'autres conditions et else pour tout le reste. Python les vérifie dans l'ordre et n'exécute que le premier bloc dont la condition est vraie. Chaque ligne de condition se termine par deux-points.
position, target = 100, 250
if target > position:
print("buy", target - position) # buy 150
elif target < position:
print("sell", position - target)
else:
print("hold")L'indentation est la structure
Les lignes indentées sous le if forment le bloc qui lui appartient ; la première ligne revenue à la marge gauche est en dehors. Utilisez quatre espaces par niveau, toujours de la même façon. Python n'a pas d'accolades : l'indentation est la structure, donc une mauvaise indentation change ce que fait le programme.
# 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 marginL'ordre compte : la première correspondance l'emporte
Comme seule la première branche vraie s'exécute, une échelle d'elif peut utiliser des seuils : chaque branche n'a qu'à dire ce qui est nouveau. Un barème de frais en est un cas classique. Placez d'abord la condition la plus étroite ou la plus précise, sinon une condition large placée au-dessus absorbe le cas.
# 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.0007Retourner tôt
Dans une fonction, return termine la fonction sur-le-champ. Vous pouvez donc traiter chaque cas avec son propre if et return, sans else ni imbrication profonde ; la dernière ligne est le cas par défaut. Un code écrit ainsi reste plat et se lit comme une liste de règles.
# 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 holdUn choix en une ligne
Quand un if choisit seulement entre deux valeurs, une expression conditionnelle est plus courte : value_if_true if condition else value_if_false. C'est une expression : elle peut se trouver dans une f-string ou un return. Servez-vous-en pour les choix simples, et d'un if normal dès qu'il y a plus à faire.
# A one-line choice between two values
cash = 40.0
status = "ok" if cash >= 0 else "overdrawn"
print(status) # okis_open est déjà un booléen, écrivez if is_open: et if not is_open:. if is_open == True: dit la même chose de façon plus lourde. Il en va de même pour if x: avec des nombres et du texte : cela teste « non nul » et « non vide ».- Deux issues :
if/else, ou une expression conditionnelle sur une ligne. - Plusieurs plages ordonnées : une échelle d'
elif, condition la plus étroite d'abord. - Cas particuliers et entrées invalides : des
returnprécoces, puis le cas normal en dernier.
À suivre : les boucles for et range, pour répéter un bloc de code pour chaque élément.
Lab : ce qui est noté
- Décider d'acheter, de vendre ou de conserver avec
order_side25 pts - Choisir le taux de frais selon un volume avec
fee_tier25 pts - Garder une valeur entre deux limites avec
clamp25 pts - Transformer deux moyennes en signal avec
crossover_signal25 pts