IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Mon programme ne fonctionne pas.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut Mon programme ne fonctionne pas.
    Bonjour,

    J'apprends le Python et pour m'entraîner je développe un programme qui est un convertisseur monétaire (Euros -> Francs pour le moment.).
    Mon souci est que lorsque je lance le programme et que j'entre une somme à convertir et que je presse ENTREE le programme se ferme et même si je ne met pas de somme et que je presse ENTREE le programme se ferme. Je pense que cela doit venir de ma boucle mais je ne trouve pas l'erreur exacte.

    PS: Je travail toujours sur la ligne de commande python.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #!/usr/bin/python
     
    #Powered by Apprenti Pythonien
    #Dernière modification le : 11/06/08
     
     
     
    # [DEMANDE À L'UTILISATEUR] Somme à convertir (Somme donnée en Euros à convertir en Francs)
    print 'Saisissez la somme en Euros que vous souhaitez convertir en Francs.'
    SommeEuros = input()
    # [FIN DE LA DEMANDE À L'UTILISATEUR]
     
     
    # [TRAITEMENT DES DONNÉES] On vérifie que l'utilisateur à bien remplis le champ et on donne le résultat
    LenSommeEuros = len(SommeEuros)
    if SommeEuros < 1:
    	while LenSommeEuros < 1:
    		print 'Saisissez la somme en Euros que vous souhaitez convertir en Francs.'
    		SommeEuros = input()
    		LenSommeEuros = len(SommeEuros)
    		if LenSommeEuros > 1:
    			ValeurUnEuro = 6.55957
    			SommeFrancs = SommeEuros * ValeurUnEuro
    			print SommeFrancs
    			break
    else:
    	ValeurUnEuro = 6.55957
    	SommeFrancs = SommeEuros * ValeurUnEuro
    	print SommeFrancs
    # [FIN DU TRAITEMENT DES DONNÉES]
     
     
    # [COMMANDE SPÉCIALE] Input pour ne pas que le programme se ferme tout seul
    raw_input('Pressez entrée pour quitter le convertisseur')
    # [FIN DE LA COMMANDE SPÉCIALE]
    Merci aux personnes qui m'aideront.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut déjà
    Bonjour,

    Déjà, ajoute ceci en deuxième ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    # -*- coding: Latin-1 -*-
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    # -*- coding:UTF-8 -*-
    Ensuite change:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LenSommeEuros = len(SommeEuros)
    en (ajout de str) puisque len est pour les string, il te faut donc transformer ton int en str

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LenSommeEuros = len(str(SommeEuros))

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut
    J'ai fais les modifications que tu m'as demandé et qaund je teste avec une somme, cela fonctionne, mais si je presse directement ENTREE, on ne me redemande pas de saisir une somme et le programme se ferme ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/usr/bin/python
     # -*- coding:UTF-8 -*-
     
    #Powered by Apprenti Pythonien
    #Dernière modification le : 11/06/08
     
     
     
    # [DEMANDE À L'UTILISATEUR] Somme à convertir (Somme donnée en Euros à convertir en Francs)
    print 'Saisissez la somme en Euros que vous souhaitez convertir en Francs.'
    SommeEuros = input()
    # [FIN DE LA DEMANDE À L'UTILISATEUR]
     
     
    # [TRAITEMENT DES DONNÉES] On vérifie que l'utilisateur à bien remplis le champ et on donne le résultat
    LenSommeEuros = len(str(SommeEuros))
    if LenSommeEuros < 1:
    	while LenSommeEuros < 1:
    		print 'Saisissez la somme en Euros que vous souhaitez convertir en Francs.'
    		SommeEuros = input()
    		LenSommeEuros = len(str(SommeEuros))
    		if LenSommeEuros > 1:
    			ValeurUnEuro = 6.55957
    			SommeFrancs = SommeEuros * ValeurUnEuro
    			print SommeFrancs
    			break
    else:
    	ValeurUnEuro = 6.55957
    	SommeFrancs = SommeEuros * ValeurUnEuro
    	print SommeFrancs
    # [FIN DU TRAITEMENT DES DONNÉES]
     
     
    # [COMMANDE SPÉCIALE] Input pour ne pas que le programme se ferme tout seul
    raw_input('Pressez entrée pour quitter le convertisseur')
    # [FIN DE LA COMMANDE SPÉCIALE]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut
    Citation Envoyé par Apprenti Pythonien Voir le message
    mais si je presse directement ENTREE, on ne me redemande pas de saisir une somme et le programme se ferme ...
    C'est normal, tu n'a rien fait pour pouvoir re-saisir une somme... pour te mettre sur la voie, tu devrais penser à une boucle qui engloberait ton code.

    Tu as juste fait une boucle pour vérifier si on entrait un nombre... fais la meme chose mais pour l'ensemble de ton code... par exemple permettre l'arrêt du prog seulement si on entre une valeur négative

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	ValeurUnEuro = 6.55957
    	SommeFrancs = SommeEuros * ValeurUnEuro
    	print SommeFrancs
    ton algo pourrait être aussi améliorer, car tu refais deux fois ce code

    Continue à chercher un peu, tu es sur la bonne voie mais il faut persévérer un peu... si je te donne la solution de suite, tu n'apprendras rien...

    a+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Un petit conseil en passant: il est d'usage pour les noms de variables qu'elles commencent par une minuscule comme valeurUnEuro ou sommeEnFrancs.

    Ceci n'a rien d'obligatoire, ce n'est qu'une convention mais ça permet de rendre ton code plus lisible (on identifie tout de suite facilement les variables) et même pour toi, si tu prends cette habitude tout de suite, tu sauras plus facilement quoi rechercher lorsque tu liras les codes d'autres.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SommeEuros = input( 'Saisissez la somme en Euros que vous souhaitez convertir en Francs.')
    permet d'alléger un peu


    ==============

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print 'SommeFrancs =',SommeFrancs
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print 'SommeFrancs = '+SommeFrancs
    (la différence est subtile. La deuxième écriture te servira quand tu voudras écrire dans des fichiers)
    permet de rendre plus agréable l'expression du résultat.


    ==============


    Je trouve personnellement inutile la création d'une variable ValeurUnEuro qui nécessite la réservation d'un petit espace mémoire et queques millisecondes pour aller y chercher la valeur chaque fois qu'il en est besoin, alors que si on écrit SommeFrancs = SommeEuros * 6.55957 ça se fait instantanément (du moins c'est comme ça que je comprends les choses).
    En outre, on peut tout grouper dans une seule instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print 'SommeFrancs =',SommeEuros*6.55957

    =================

    En outre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    e = ''
    while len(e)<1:
        e = raw_input('Saisissez la somme en Euros que vous souhaitez convertir en Francs.')
    SommeFrancs = float(e)
    évite un raw_input préalable.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut
    Bonjour, merci à tous pour vos réponse je vais refaire le code à zéro en tenant compte de vos conseils et je vous donne le résultat par la suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon programme ne fonctionne pas comme je veux
    Par menoulette dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 22/04/2011, 00h16
  2. mon programme ne fonctionne pas
    Par luckylucky dans le forum Général Python
    Réponses: 2
    Dernier message: 27/02/2010, 20h09
  3. Mon programme ne fonctionne pas
    Par fouedou77 dans le forum C
    Réponses: 2
    Dernier message: 24/06/2009, 17h57
  4. Mon programme ne fonctionne pas
    Par phil23 dans le forum C
    Réponses: 4
    Dernier message: 22/03/2007, 16h31
  5. mon trigger ne fonctionne pas !
    Par japi33 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/03/2006, 21h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo