Stopper mon programme.

Stopper mon programme. - Python - Programmation

Marsh Posté le 04-01-2012 à 18:25:45    

Bonjour,
 
Je débute en python et je fais quelques exos
Dans celui que je fais actuellement il fallait un progamme pour afficher un triangle comme ceci
 
*
**
***
****
***
**
*
 
En fonction d'une hauteur que l'on demande.
 
Bon rien de bien compliqué a priori mais le problème c'est que mon programme affiche le triangle et passa à la ligne indéfiniment.
Je voudrais qu'il s'arrete après avoir mis la dernière *...
 
Voila le code:

Code :
  1. H=input("Saisir une valeur : " )
  2. I=1
  3. J=1
  4. while I<=H:
  5.         while J<=I:
  6.                 print(J*"*" )
  7.                 J=J+1
  8.         I=I+1
  9. J=H-1
  10. while I>=1:
  11.         while J<=I:
  12.                 print(J*"*" )
  13.                 J=J-1
  14.         I=I-1


 
Merci de m'indiquer comment faire.

Reply

Marsh Posté le 04-01-2012 à 18:25:45   

Reply

Marsh Posté le 04-01-2012 à 18:55:50    

Ajoute :
import sys
au debut de ton code.
et :
sys.exit(0)
à la fin


Message édité par spamoa le 04-01-2012 à 18:56:10
Reply

Marsh Posté le 04-01-2012 à 18:57:24    

Autre solution plus propre :
 
Ajoute :
if __name__ == "__main__":
au debut de ton code et indente le reste du code d'un cran.

Reply

Marsh Posté le 04-01-2012 à 19:08:56    

Bonjour merci pour les réponses mais chez moi ni l'une ni l'autre ne fonctionne.
 
Pour lancer le programme j'utilise la fonction Run quand je suis dans IDLE.
La je vois le triangle se faire mais le prog continu sont retour à la ligne...
Si je lance le fichier directement, je saisie la valeur et la ça doit aller trop vite car je ne vois rien...

Reply

Marsh Posté le 04-01-2012 à 19:29:03    

Si tu le fait tourner depuis IDLE c'est normal.
 
En fait ton programme est bien terminé mais l'invité de commande python intégré  à IDLE ne se ferme pas à la fin de l’exécution (justement pour te permettre de voir ce que ton programme à fait).
 
Du coup à la fin de l’exécution tu te retrouve sur un invité de commande python dans lequel tu peu taper du code qui sera exécuté à la volée.  
 
Pour l’exécution directe, tu peu essayer d'ajouter ça à la fin de ton code pour bloquer l’exécution (et voir ce qui s'est passé) :
raw_input("Appuyer sur entrée pour sortir !!!" )
 

Reply

Marsh Posté le 04-01-2012 à 19:36:13    

Arf ça ne fonctionne plus du tout dans l'invite de commande...
Je double clic sur le fichier .py l'invite se lance et se ferme aussitôt.

Reply

Marsh Posté le 04-01-2012 à 20:54:15    

Icedarts a écrit :

Arf ça ne fonctionne plus du tout dans l'invite de commande...
Je double clic sur le fichier .py l'invite se lance et se ferme aussitôt.


 
As-tu pensé a repartir de ton code d'origine avant de faire la dernière modification ?

Reply

Marsh Posté le 04-01-2012 à 21:14:58    

Oui, j'ai testé toutes les possibilités en combinant tes réponses à mon code ;)

Code :
  1. H=input("Saisir une valeur : " )
  2. I=1
  3. J=1
  4. while I<=H:
  5.         while J<=I:
  6.                 print(J*"*" )
  7.                 J=J+1
  8.                 I=I+1
  9. J=H-1
  10. while I>=1:
  11.         while J<=I:
  12.                 print(J*"*" )
  13.                 J=J-1
  14.         I=I-1
  15. raw_input("Appuyer sur entrée pour sortir !!!" )


ça fonctionne chez toi?

Reply

Marsh Posté le 05-01-2012 à 09:08:18    

Icedarts a écrit :

Oui, j'ai testé toutes les possibilités en combinant tes réponses à mon code ;)

Code :
  1. H=input("Saisir une valeur : " )
  2. I=1
  3. J=1
  4. while I<=H:
  5.         while J<=I:
  6.                 print(J*"*" )
  7.                 J=J+1
  8.                 I=I+1
  9. J=H-1
  10. while I>=1:
  11.         while J<=I:
  12.                 print(J*"*" )
  13.                 J=J-1
  14.         I=I-1
  15. raw_input("Appuyer sur entrée pour sortir !!!" )


ça fonctionne chez toi?


 
En effet ça ne fonctionne pas mais je vois qqs erreurs par exemple l'incrémentation dans ta première boucle n'est pas indentée correctement. N'oublis pas qu'en python l'indentation définis les blocs d’exécution il est donc primordiale d'avoir un code propre.
Si tu as déjà fait de l'algo tu peut faire une trace tu y verra plus clair.
 
Sinon il faut peut-être aussi  enlevé le "é" de la chaîne "Appuyer sur entrée pour sortir !!!" car chez moi ce caractère fait planté l'interpréteur.
 
J'ai noté 2 erreurs (mais il y en a peut-être d'autres) :
 * Icrémentation mal indentée dans la première boucle.
 * La variable J n'est pas redéfinie dans les boucles while I<=H: et while I>=1: (vue que tu l'incrément/décrément il faut la réinitialiser dans la boucle parente sinon la boucle fille n'est jamais re-exécutée)

Reply

Marsh Posté le 05-08-2013 à 17:05:52    

C'est pas mieux comme ca?Plus simple et sans erreur :)  :)  
 
 

Code :
  1. print ("entrez une valeur: " )
  2. a = eval(input())
  3. i=0
  4. while i < a:
  5.     print(i*"*" )
  6.     i= i+1
  7.    
  8. while i>=0:
  9.         print(i*"*" )
  10.         i= i-1

:)  :)

Message cité 1 fois
Message édité par yvkoe le 05-08-2013 à 17:08:35
Reply

Marsh Posté le 05-08-2013 à 17:05:52   

Reply

Marsh Posté le 06-08-2013 à 12:40:10    

yvkoe a écrit :

C'est pas mieux comme ca?Plus simple et sans erreur :)  :)  
 
 

Code :
  1. print ("entrez une valeur: " )
  2. a = eval(input())
  3. i=0
  4. while i < a:
  5.     print(i*"*" )
  6.     i= i+1
  7.    
  8. while i>=0:
  9.         print(i*"*" )
  10.         i= i-1

:)  :)


Tu pourrais arrêter de remonter tous les vieux threads de la cat s'il te plait?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed