Projet la liste de course, problème choix 3
Re,
Je suis sur la liste de course.
J'ai une étape qui n'a pas l'air de fonctionner.
J'ai ajouté un objet dans ma liste de courses.
Quand je fais choix 3 pour afficher ce qu'il y a dedans ça me dit qu'elle est vide.
Est-ce que vous avez un indice qui pourrait m'aiguiller ? Car le reste de mon script a l'air de fonctionner.
Merci
liste_de_courses = []
element_ajouter = ""
element_retirer = ""
while True:
print("Choissisez parmi les 5 options suivantes :\n"
"1 : Ajouter un élément à la liste\n"
"2 : Retirer un élément de la liste\n"
"3 : Afficher la liste\n"
"4 : Vider la liste\n"
"5 : Quitter")
choix_utilisateur = input("==> Votre choix : ")
if choix_utilisateur == "1":
element_ajouter = input("Entrez le nom d'un élément à ajouter à la liste de courses : ")
liste_de_courses.append(element_ajouter)
print(f"L'élément {element_ajouter} a bien été ajouté à la liste.")
elif choix_utilisateur == "2":
element_retirer = input("Entrez le nom d'un élément à retirer de la liste de courses : ")
if element_retirer in liste_de_courses:
liste_de_courses.remove(element_retirer)
else:
print(f"L'élément {element_retirer} n'est pas dans la liste.")
elif choix_utilisateur == "3":
if liste_de_courses == True:
print("Voici le contenu de votre liste:")
for i, element in enumerate(liste_de_courses):
print(f"{i + 1}. {element}")
else:
print("La liste de course est vide.")
elif choix_utilisateur == "4":
liste_de_courses.clear()
print("La liste a été vidée de son contenu.")
elif choix_utilisateur == "5":
break
else:
print("Veuillez entrer un choix valide.")
print("A bientôt !")
hello,
c'est ta condition d'affichage de la liste qui n'est pas bonne. Ta liste se remplie bien.
Avec ta condition tu teste si ta liste est un booléen True. Or ta liste n'est pas un booléen. Tu dois tester si ta liste est vide ou non.
Je te laisse trouver mais si tu as besoin dis moi et je te donnerai un moyen de vérifier si une liste est vide ou non.
Ah je croyais qu'une liste vide retournait false. Et une avec au moins un élément True. J'ai du mal comprendre.
J'ai essayé avec len mais ça veut pas :
elif choix_utilisateur == "3":
if len(liste_de_courses) > 0:
print("Voici le contenu de votre liste:")
for i, element in enumerate(liste_de_courses):
print(f"{i + 1}. {element}")
else:
print("La liste de course est vide.")
En fait tu ne peux pas utiliser False ou True pour une liste qu'elle soit vide ou remplie.
In [1]: ma_liste = []
In [2]: ma_liste == False
Out[2]: False
In [3]: ma_liste == True
Out[3]: False
In [4]: ma_liste.append(1)
In [5]: ma_liste == True
Out[5]: False
In [6]: ma_liste == False
Out[6]: False
tu vois que dans tous les cas, la condition sera False.
Salut Gabriel !
Je ne sais plus si j'en parle en ces termes dans les vidéos théoriques de la formation, mais ce qu'il faut comprendre c'est que ce n'est pas la liste en tant que telle qui est vraie ou fausse mais son évaluation en booléen. Je prends garde désormais de dire précisément ceci quand j'en parle en vidéo ou en mentorat car je sais que quand on débute on est un peu perdu avec ça.
Quand tu fais :
ma_liste == True
Ça te retourne False car le symbole d'égalité (==) vérifie l'égalité des valeurs.
Et ta liste n'est en aucune façon égale à la même valeur qu'un booléen (10 == 10 retourne True car 10 est bien égal à 10, mais [] n'est pas égal à True pas plus que [1, 2, 3] ou n'importe quelle autre liste).
Maintenant, l'évaluation d'une liste en booléen retournera False ou True en fonction de si la liste contient 0 ou 1 élément et plus.
L'évaluation en booléen = quand tu utilises bool sur ta liste :
>>> bool([])
False
>>> bool([1])
True
Je te conseille de lire le glossaire sur les booléens, je parle de cette évaluation des types natifs en booléen. À chaque fois, 1 valeur retournera False et toutes les autres retourneront True.
Pour les nombres par exemple, 0 retournera False (bool(0) 👉 False) et tous les autres nombres retourneront True (bool(-1) 👉 True, bool(1) 👉 True, etc).
J'espère que c'est plus clair :)
D'accord merci.
Et aussi voici mon code finale pour le projet liste de course.
Je n'ai pas encore regardé la solution.
Est-ce que c'est bien ou pas ?
liste_de_courses = []
element_ajouter = ""
element_retirer = ""
while True:
print("Choissisez parmi les 5 options suivantes :\n"
"1 : Ajouter un élément à la liste\n"
"2 : Retirer un élément de la liste\n"
"3 : Afficher la liste\n"
"4 : Vider la liste\n"
"5 : Quitter")
choix_utilisateur = input("==> Votre choix : ")
if choix_utilisateur == "1":
element_ajouter = input("Entrez le nom d'un élément à ajouter à la liste de courses : ")
liste_de_courses.append(element_ajouter)
print(f"L'élément {element_ajouter} a bien été ajouté à la liste.")
elif choix_utilisateur == "2":
element_retirer = input("Entrez le nom d'un élément à retirer de la liste de courses : ")
if element_retirer in liste_de_courses:
liste_de_courses.remove(element_retirer)
else:
print(f"L'élément {element_retirer} n'est pas dans la liste.")
elif choix_utilisateur == "3":
if len(liste_de_courses) > 0:
print("Voici le contenu de votre liste:")
for i, element in enumerate(liste_de_courses):
print(f"{i + 1}. {element}")
else:
print("La liste de course est vide.")
elif choix_utilisateur == "4":
liste_de_courses.clear()
print("La liste a été vidée de son contenu.")
elif choix_utilisateur == "5":
break
else:
print("Veuillez entrer un choix valide.")
print("A bientôt !")
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte