afficher_suite_fibonacci(15) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Ludovic DENEUVILLE
Vous allez travailler sur le logiciel Visual Studio Code disponible sur les datalab :
firstname.lastname@eleve.ensai.fr)Dans votre navigateur, vous arrivez sur VSCode.
Vous pouvez si vous le souhaitez choisir un thème (dark, light…).
En cas de besoin, VSCode est également installé sur vos VM ENSAI.
Visual Studio Code (VS Code) est un éditeur de code moderne, gratuit et léger, qui permet d’écrire, exécuter et déboguer des programmes. Avec VSCode Server, on peut l’utiliser dans un navigateur web tout en gardant la puissance d’un serveur distant.
Son interface est composée de plusieurs parties principales :
En haut de la barre latérale gauche, vous pouvez cliquer sur les 3 petits traits horizontaux pour accéder aux différents menus : File, Edit, Run, Terminal…
De nombreuses extensions sont disponibles pour VSCode. Par exemple, nous allons utiliser Ruff pour mettre en forme votre code.
Vous n’allez pas coder à partir d’une feuille blanche.
Votre base de départ sera ce dépôt de code https://github.com/ludo2ne/ENSAI-1A-SD-TP, dont vous allez créer un clone.
code-server ENSAI-1A-SD-TPhttps://...user.lab.sspcloud.fr/?folder=/home/onyxia/work/ENSAI-1A-SD-TPCe dépôt contient :
editor.formatOnSave: truePassons maintenant au code Python.
Python est un langage interprété : le code est lu et exécuté directement ligne par ligne par un interpréteur.
Nul besoin d’indiquer le type des variables. Il est déterminé automatiquement au moment de l’exécution.
De plus une même variable peut changer de type sans quel ’on ait besoin de le préciser.
Une liste en Python est une collection ordonnée et modifiable d’éléments, pouvant contenir des éléments de différents types.
# Création d'une liste
liste = ["Alice", "Benoit", "Camille", "Diane"]
liste.pop() # Supprimer le dernier élément
liste.append(5.2) # Ajouter un élément à la fin
nb_elements = len(liste)
if nb_elements == 0:
print("La liste est vide")
elif not nb_elements > 0:
print("Il y a un petit souci avec la fonction len")
else:
print(f"Il y a {nb_elements} éléments dans la liste")
# Parcours par valeurs
for v in liste:
print(v)
# Parcours par index
for i in range(len(liste)):
print(liste[i])
# Parcours par index et valeurs
for i, v in enumerate(liste):
print(f"index {i} : valeur {v}")
# Parcours par index avec une boucle While
index = 0
while index < len(liste):
print(liste[index])
index += 1range(start, stop, step) sert à générer une suite de nombres entiers.
Pour générer un nombre aléatoire entre 1 et 9, utilisez le package random.
Tentons maintenant de copier la liste.
Une chaine de caractère peut être traitée comme une liste immuable de caractères.
Un dictionnaire est une structure de données qui associe des paires clé–valeur.
Il permet un accès rapide aux valeurs en utilisant leur clé.
Autres Collections utiles :
Set : collection non ordonnée de valeurs uniques
Tuple : collection ordonnée de valeurs immuables
dico.py
Vous devez écrire cette fonction : \(f(x) = \frac{5}{x}\) en Python
Définissons, puis utilisons cette fonction :
Ok ça fonctionne dans le cas général.
Mais que se passe-t-il si nombre=0 ? Il faut gérer ce cas, par exemple :
Ici, vous vous rendez compte que le else est facultatif.
Quand une fonction devient plus complexe, il est important de documenter i.e. :
def diviser_cinq_par(nombre: float) -> float | None:
"""Divise 5 par un nombre donné.
Parameters
----------
nombre : float
Le nombre par lequel 5 sera divisé.
Returns
-------
float | None
Le résultat de la division de 5 par nombre.
Retourne None si nombre est égal à 0.
"""
if nombre == 0:
return None
return 5 / nombre
print(diviser_cinq_par("toto"))Cependant, l’ajout des types de paramètres est purement indicatif.
Si l’on veut intégrer des restrictions, il faut vérifier les types dans le code :
Enfin retourner None n’est pas très parlant, nous pouvons utiliser des Exceptions:
def diviser_cinq_par(nombre: float) -> float:
"""Divise 5 par un nombre donné.
"""
if not isinstance(nombre, (int, float)):
raise TypeError("L'argument doit être un nombre (int ou float).")
if nombre == 0:
raise ZeroDivisionError("Division par zéro interdite.")
return 5 / nombre
# Exemple d'utilisation
try:
resultat = diviser_cinq_par(0)
print("Résultat :", resultat)
except ZeroDivisionError as e:
print("Erreur :", e)
except TypeError as e:
print("Erreur de type :", e)Écrivez trois fonctions qui calculent et retournent le factoriel d’un entier n :
La suite de Fibonacci \((F_{n})_{n\in \mathbb {N}}\) est définie par :
Le résultat attendu lorsque vous appelez votre fonction :
Au rugby, les façons de marquer des points sont :