Résolue

Avis pour ma version

# Optimisation

Bonjour,

Pouvez-vous me dire comment apprendre à optimser mon code pour arriver à un niveau professionnel ?
Quels sont les bonnes pratiques à avoir dès le début afin d'arriver à un bon niveau ?
Voici ma version de l'exercice et j'ai l'impréssion que ce n'est pas très propre...

import sys

liste = []
ajouter = "1"
retirer = "2"
afficher = "3"
vider = "4"
quitter = "5"
choix = ""

while choix != quitter:
    choix = input("Choisissez parmi les 5 options suivantes :\n1: Ajouter un élément à la liste\n2: Retirer un élément à la liste\n3: Afficher la liste\n4: Vider la liste\n5: Quitter\n 👉 Votre choix : ")

    #01 : Ajouter un élément
    if choix == ajouter:
        element = input("\nQue voulez-vous ajouter ?\n")
        liste.append(element)
        print(f"{element} a été ajouté à la liste\n")

    #02 : Supprimer un élément
    elif choix == retirer:
        element = input("\nQue voulez-vous retirer ?\n")
        #Vérifier si l'élément existe dans le liste
        if element in liste:
            liste.remove(element)
            print(f"{element} a été retiré de la liste !\n")
        else:
            print("\nCet élément n'existe pas !\n")

    #03 : Afficher la liste
    elif choix == afficher:
        taille_liste = len(liste)
        rang = 0
        #Vérifier si il existe des éléments dans la liste'
        if taille_liste == 0:
            print("\nLa liste est vide.\n")
        else:
            print(f"\nVotre liste est composé de {taille_liste} éléments : ")
            for i in liste:
                rang += 1
                #Vérifier si c'est le dernier élément de la liste
                if rang == taille_liste:
                    print(f"{rang}. {i}\n")
                else:
                    print(f"{rang}. {i}")

    #04 : Supprimer le contenu de la liste
    elif choix == vider:
        if len(liste) > 0:
            liste.clear()
            print("\nVotre liste a été vidé.\n")
        else:
            print("\nLa liste est vide.")

    #Quitter le programme
    elif choix == quitter:
        print("\nAu revoir !")
        sys.exit()   
    else:
        print(f"\n{choix} n'est pas une option.\n")

Merci !

Salut Farouk !

Ton code est déjà très bien et similaire à ma solution, c'est un code parfait quand on débute parce que ça reste simple et tu découpes bien les choses.

Après on peut effectivement toujours améliorer le code mais en utilisant des concepts plus avancés qu'on voit plus tard dans la formation. Je peux te montrer quelques exemples mais dis-toi bien que c'est 100% normal de ne pas produire ce genre de code dès le début.

Écrire un code pro, c'est quelque chose qui s'apprend sur le très long terme et qu'on continue toujours d'améliorer. Moi-même, j'écris du code mieux aujourd'hui qu'il y a 2 mois, et je continue de m'améliorer même après des années à programmer !

Pour optimiser le code on pourrait du coup :

  1. Utiliser un dictionnaire pour ton menu : Plutôt que d'avoir une longue série de conditions if / elif, tu peux stocker l'ensemble de tes options dans un dictionnaire et appeler directement la bonne fonction selon le choix de l'utilisateur.

J'en parle plus en détail dans cette vidéo sur YouTube :
https://www.youtube.com/watch?v=evlLjwZ1Lg0&t=426s

  1. Découper ton code : Dans une version plus avancée, on pourrait découper le code en fonctions pour mieux séparer les "responsabilités" (separation of concern, un concept de programmation).

  2. Utiliser enumerate pour les indices : Plutôt que de créer un compteur rang pour tes indices, tu peux utiliser la fonction built-in enumerate. Ça t'évite quelques lignes de code et c'est plus pro.

Voici une version possible du code qui intègre tous ces conseils :

def add(liste):
   element = input("Que veux-tu ajouter ?\n")
   liste.append(element)
   print(f"{element} a été ajouté à la liste.\n")

def remove(liste):
   element = input("Que veux-tu retirer ?\n")

   if element in liste:
       liste.remove(element)
       print(f"{element} a été retiré de la liste !\n")
   else:
       print("Cet élément n'existe pas !\n")

def show(liste):
   if len(liste) == 0:
       print("La liste est vide.\n")
   else:
       print(f"Voici ta liste : ")
       for index, item in enumerate(liste, 1):
           print(f"{index}. {item}")

def empty(liste):
   if liste:
       liste.clear()
       print("Ta liste a été vidée.\n")
   else:
       print("La liste est déjà vide.\n")

def loop():
   liste = []
   options = {
       '1': add,
       '2': remove,
       '3': show,
       '4': empty,
       '5': "quit"
   }

   choix = ""

   while choix != "5":
       choix = input(
           "Choisis parmi les 5 options suivantes :\n1: Ajouter un élément à la liste\n2: Retirer un élément à la liste\n3: Afficher la liste\n4: Vider la liste\n5: Quitter\n 👉 Ton choix : ")
       if choix in options:
           if choix == "5":
               print("Au revoir !")
           else:
               options[choix](liste)
       else:
           print(f"{choix} n'est pas une option.\n")

if __name__ == "__main__":
   loop()

Voilà quelques pistes pour toi ! Dis-toi que le plus important est d'abord que ton code marche, alors ne t'inquiète pas si tout n'est pas "parfait".

Bonne continuation !

Merci beaucoup pour cette réponse très détaillé, ça m'aide ! :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.