Sortie de la boucle while True
Du coup après chaque choix effectué tu restes dans ta boucle True qui te fait recommencer.
Mais à la fin le choix 5 avec le sys exit, ça te fait sortir de la deuxième boucle while user_choice... mais aussi de la boucle while True.
J'ai essayé avec break ça fonctionne aussi. Mais je ne comprends pas comment le break ou sys exit peut faire sortir
des deux boucles d'un coup. Je ne sais pas si je suis clair.
merci
while True:
user_choice = ""
while user_choice not in MENU_CHOICES:
user_choice = input(MENU)
if user_choice not in MENU_CHOICES:
print("Veuillez choisir une option valide...")
if user_choice == "1":#ajouter un élément
item = input("Entrez le nom d'un élément à ajouter à lal iste de course : ")
LISTE.append(item)
print(f"Lélément {item} a bien été ajouté à la liste.")
elif user_choice == "2": #retirer un élément
item = input("Entrez le nom d'un élément à retirer de la liste de courses : ")
if item in LISTE:
LISTE.remove(item)
print(f"L'élément {item} a été supprimer de la liste.")
else:
print(f"L'élement {item} n'est pas dans la liste.")
elif user_choice == "3":#afficher la liste
if LISTE:#Si vide évaluée comme False donc ne s'exécute pas
print("Voici le contenu de votre liste : ")
for i, item in enumerate(LISTE, 1):
print(f"{i}. {item}")
else:
print("Votre liste ne contient aucun élément.")
elif user_choice == "4": #vider la liste
LISTE.clear()
print("Votre liste a été vidée.")
elif user_choice == "5": #quitter
print("A bientôt")
sys.exit()
print("-" * 50)
Bonjour !
Je me suis bloqué à cet exercice de jeu de rôle dans le terminal. Avant de voir le corrigé je pose mon problème.
Mon code n'a pas marché et je le savais d'avance car il manque de logique dans le déroulé de mon script.
Je le mets ici tout de même, s' il y a des suggestions à me faire, des conseils à prendre en compte pour une bonne logique, des concepts à revoir pour au moins être sur le chemin de la résolution du problème, je vois que j'ai encore à faire pour appréhender les concepts de bases.
Merci
from random import randint
# Le but de ce projet est de créer un jeu de rôle textuel dans le terminal.
choix_joueur = ""
# Le jeu comporte deux joueurs : vous et un ennemi.
"""Deux variables joueur & ennemi"""
# Vous commencez tous les deux avec 50 points de vie.
point_vie_ennemi = point_vie_joueur = 50
# Votre personnage dispose de 3 potions qui vous permettent de récupérer des points de vie.
""" joueur/ 03 potions """
nombre_potion = 0
# L'ennemi ne dispose d'aucune potion.
"""ennemi/ 0 potion"""
# Chaque potion vous permet de récupérer un nombre aléatoire de points de vie, compris entre 15 et 50.
potion = randint(15, 50)
# Votre attaque inflige à l'ennemi des dégâts aléatoires compris entre 5 et 10 points de vie.
degat_joueur = randint(5, 10)
# L'attaque de l'ennemi vous inflige des dégâts aléatoires compris entre 5 et 15 points de vie.
degat_ennemi = randint(5, 15)
while point_vie_joueur and point_vie_ennemi > 0 :
input("Souhaitez-vous attaquer (1) ou utiliser une potion (2) ? ")
if not choix_joueur.isdigit() and not 1 or not 2:
print("Veuillez mettre un choix valide")
continue
point_vie_restant_joueur = ""
point_vie_restant_ennemi = ""
# Lorsque vous utilisez une potion, vous passez le prochain tour.
if choix_joueur == 1 :
point_vie_restant_joueur = point_vie_joueur - degat_ennemi
point_vie_restant_ennemi = point_vie_ennemi - degat_joueur
print(f"Vous avez infligé {degat_joueur} points de dégâts à l'ennemi 📍")
print(f"L'ennemi vous a infligé {degat_ennemi} points de dégâts 📍")
print(f"Il vous reste {point_vie_restant_joueur} points de vie 💚")
print(f"Il reste {point_vie_restant_ennemi} de vie à l'ennemi 💚")
elif choix_joueur == 2:
while nombre_potion > 3:
print("vous ne disposez plus de potion")
continue
while nombre_potion < 3 :
point_vie_restant_joueur = point_vie_joueur + potion
point_vie_restant_joueur = point_vie_restant_joueur + potion
point_vie_restant_joueur = point_vie_joueur - degat_ennemi
print(f"L'ennemi vous a infligé {degat_ennemi} dégâts de vie point_vie_restant_joueur = point_vie_restant_joueur + potion📍")
print(f"Il vous reste {point_vie_restant_joueur} de vies 💚")
print(f"Il reste {point_vie_restant_ennemi} de vies 💚")
potion += 1
if int(point_vie_restant_joueur) < 0 :
print("Vous avez perdu la partie 💘")
if int(point_vie_restant_ennemi) < 0 :
print("L'enemi a perdu la partie 💘")
print("➖" * 30)
Bonjour Gabriel,
Je suis d'accord pour le sys.exit() qui te fait sortir de ton script
Par contre, pour le break, tu sors uniquement de la boucle en cours, et c'est le cas ici, car quand on arrive à l'option 5 on est déjà sorti de la 2ème boucle qui sert uniquement à définir user_choice.
Le break te fait donc sortir de la boucle while True
J'espère avoir été assez clair
Bonjour,
voici ma solution au challenge:
liste = []
ligne = "_____________________________________\n"
while True:
print("Choisissez 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 = input("--> Votre choix : ")
if choix == "1":
element = input("Entrez le nom d'un élément à ajouter à la liste de courses : ")
liste.append(element)
print(f"L'élément {element} a bien été ajouté à la liste.")
elif choix == "2":
element = input("Entrez le nom d'un élément à retirer de la liste de courses : ")
if element in liste:
liste.remove(element)
print(f"L'élément {element} a bien été retiré de la liste.")
else:
print("!!! Entrez un élément présent dans la liste de course !!!")
elif choix == "3":
if liste:
print("Voici le contenu de votre liste : ")
for element in liste:
print(f"{liste.index(element) + 1}. {element}")
else:
print("Votre liste ne contient aucun élément.")
elif choix == "4":
liste.clear()
print("la liste a bien été vidée.")
elif choix == "5":
print("A bientôt !")
break
else:
print("Veuillez entrer une option valide")
print(ligne)
J'ai la mauvaise habitude d'utiliser la bloucle while True. :/
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte