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

  FORUM HardWare.fr
  Programmation
  Python

  Stopper mon programme.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Stopper mon programme.

n°2119541
Icedarts
Posté le 04-01-2012 à 18:25:45  profilanswer
 

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.

mood
Publicité
Posté le 04-01-2012 à 18:25:45  profilanswer
 

n°2119552
spamoa
Posté le 04-01-2012 à 18:55:50  profilanswer
 

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
n°2119554
spamoa
Posté le 04-01-2012 à 18:57:24  profilanswer
 

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

n°2119557
Icedarts
Posté le 04-01-2012 à 19:08:56  profilanswer
 

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...

n°2119560
spamoa
Posté le 04-01-2012 à 19:29:03  profilanswer
 

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 !!!" )
 

n°2119563
Icedarts
Posté le 04-01-2012 à 19:36:13  profilanswer
 

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.

n°2119570
spamoa
Posté le 04-01-2012 à 20:54:15  profilanswer
 

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 ?

n°2119574
Icedarts
Posté le 04-01-2012 à 21:14:58  profilanswer
 

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?

n°2119618
spamoa
Posté le 05-01-2012 à 09:08:18  profilanswer
 

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)

n°2199453
yvkoe
Posté le 05-08-2013 à 17:05:52  profilanswer
 

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
mood
Publicité
Posté le 05-08-2013 à 17:05:52  profilanswer
 

n°2199513
masklinn
í dag viðrar vel til loftárása
Posté le 06-08-2013 à 12:40:10  profilanswer
 

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

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

  Stopper mon programme.

 

Sujets relatifs
Déterminant Matrice carrée programmefaire un petit programme
aide pour modifier un petit programme avant le 21/12, 9hecrire un programme (pascal) qui calcule X puissance n ?!!!
programme de suite en javaLancer un programme minimisé à côté de l'horloge
Programme pouvant récupérer le signal d'une souris apple usb[Améliorations] Programme de manipulation de fichiers
Stopper un programme lancé en ligne de commande ? 
Plus de sujets relatifs à : Stopper mon programme.


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