Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1838 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Problème de sortie d'une boucle while en PYTHON

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de sortie d'une boucle while en PYTHON

n°2256015
jubar35
Posté le 17-04-2015 à 11:31:23  profilanswer
 

Bonjour,  
Etant étudiante en Mathématiques Appliquées, je dois réaliser un travail  
sur la programmation du jeu des Tours de Hanoï en Python.  
 
___Rappel du jeu des Tours de Hanoï___  
Le casse-tête est constitué de trois tours où la tour de gauche est remplie de tous les disques classés par ordre de décroissants. Cette tour est la tour de départ. Le but est de replacer, dans le même ordre, tous ces disques sur la tour de gauche, dite la tour d'arrivée tout en respectant les règles qui suivent :  
 
1) Il faut déplacer qu'un seul disque à la fois.  
2) Il ne faut pas placer un disque plus large au dessus d'un plus petit.  
______________________________________________________  
 
 
J'ai donc fait mon code, qui tourne tant que la tour d'arrivé n'est pas remplie.  
De plus, je voudrais que l'utilisateur puisse sortir du jeu à tout moment,  
donc j'ai rajouter une condition "et tant que sortie==False".  
Seulement, la deuxième condition ne marche pas, je n'arrives pas à sortir de la boucle while...  
 
Je pense que le problème est dû au fait que j'ai deux boucle while imbriquées l'une dans l'autre, mais je ne voit pas comment faire autrement...  
 
Si quelqu'un aurait une idée, elle serait la bienvenue.  
Merci d'avance.  
 
___Fonction utilisées dans le code___  
 
saisie_verifiee : saisie d'un nombre.  
 
choix_menu : l'utilisateur choisi le mode jeu, le mode démo ou quitter. Ici, l'utilisateur a choisi le mode jeu.  
 
nb_disque : saisie du nombre de disque pour jouer.  
 
saisie_tour : saisie de la tour que le choisie pour prendre un disque, ou pour mettre un disque  
 
dernier_disque : retourne la taille du dernier disque d'une tour  
_______________________________________________________  
 
 

Code :
  1. def jeu():
  2.    cpt=0
  3.    A,B,C,TF=[],[],[],[]
  4.    n=nb_disque()
  5.    for i in range(n,0,-1):
  6.       A=A+[i]
  7.       TF=TF+[i]
  8.    if n!=0:
  9.       print("\n",A,B,C)
  10.    sortie=False
  11.  
  12.    while C!=TF and sortie==False:
  13.      
  14.       Dep=[]
  15.       while len(Dep)==0:
  16.          RepDep=saisie_tour("prendre un" )
  17.          if RepDep in ["S","s"]:
  18.             sortie=True
  19.             break
  20.    
  21.        
  22.          elif RepDep in ["A","a"]:
  23.             Dep=A
  24.          elif RepDep in ["B","b"]:
  25.             Dep=B
  26.          elif RepDep in ["C","c"]:
  27.             Dep=C
  28.          if len(Dep)==0:
  29.             print("\nIl n'y a aucun disque à prendre dans cette tour!" )
  30.             RepDep=saisie_tour("prendre un" )
  31.        
  32.  
  33.       RepArr=saisie_tour("mettre le" )
  34.       while RepArr==RepDep:
  35.          print("\nCe déplacement est inutile, recommencez!" )
  36.          RepArr=saisie_tour("mettre le" )
  37.       if RepArr in ["S","s"]:
  38.          sortie=True
  39.          break
  40.    
  41.       elif RepArr in ["A","a"]:
  42.           Arr=A
  43.       elif RepArr in ["B","b"]:
  44.          Arr=B
  45.       elif RepArr in ["C","c"]:
  46.          Arr=C
  47.       if len(Arr)!=0:
  48.          dArr=dernier_disque(Arr)
  49.       else :
  50.          dArr=n+1
  51.       dDep=dernier_disque(Dep)
  52.  
  53.       if dDep>dArr:
  54.          print("\nCe déplacement n'est pas possible! Le disque est trop grand!" )
  55.       else :
  56.          Arr.append(Dep.pop())
  57.          cpt=cpt+1
  58.          print("\nDéplacement du disque ",dDep," sur la tour ",RepArr.upper())
  59.          print(A,B,C)
  60.    if C==TF:
  61.       print("\nBravo, vous avez gagné!!!" )
  62.    
  63.    if sortie==True:
  64.       print("\nVous avez quitté le jeu !" )

mood
Publicité
Posté le 17-04-2015 à 11:31:23  profilanswer
 

n°2256361
Krakramill​e
Posté le 22-04-2015 à 12:33:00  profilanswer
 

Ton break ligne 2  fait sortie de la boucle ligne 16 mais pas de la boucle de plus haut niveau...
 
Quand l'utilisateur saisit "s" ou "S", tu pourrais simplement faire un return pour sortir totalement de la fonction ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Problème de sortie d'une boucle while en PYTHON

 

Sujets relatifs
Problème autoit avec contrôles LabviewProblème copier/coller script Greasemonkey
Problème de variableprobleme d'affichage d'une seconde fenêtre
Créer un classement en python 2.7probleme de msgbox dans une boucle
Probleme amélioration programmeProblème avec le Voice Codec Board Eblocks
problème de syntaxe 
Plus de sujets relatifs à : Problème de sortie d'une boucle while en PYTHON


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR