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 :

Considération de la virgule comme séparateur décimal [Python 3.X]


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 10
    Points
    10
    Par défaut Considération de la virgule comme séparateur décimal
    Salut !
    Dans un exercice, on me demandait de compléter un script qui calcule et affiche l'inverse d'un nombre après l'avoir entré à la main.
    J'ai pu compléter le script (fichier .txt joint)

    Mais un autre point de l'exercice me demande de compléter le script de manière à accepter la virgule comme séparateur décimal.

    C'est ce qui m'emmène à venir demander votre aide.

    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
    #Ce programme calcule l'inverse d'un nombre
     
    cdt = False
    while (cdt == False) :
     
        eror = True                                 #condition qui permet de réessayer en cas d'erreur
        while (eror == True) :                     #boucle à effectuer tant qu'il y a erreur
            try:
                chaine = input('\nEntrer un nombre : ')
                nombre = float(chaine)
                inverse = 1.0/nombre
            except ValueError:
                print (">" + chaine + "< n'est pas un nombre !")
                eror = True                                                                     #il y a erreur ; recommencer le programme
            except ZeroDivisionError:
                print ("Division par zéro !")
                eror = True                                                                     #il y a erreur ; recommencer le programme
            else:
                print ("L'inverse de",nombre,"est : ",inverse)
                eror = False                                                                    #il n'y a pas d'erreur ; continuer le programme
     
        condition = input ("\nQuitter le programme ?\nOui => o\nNon => n\n")        #permet de déterminer l'état de 'cdt'
        cdt = 'o' in condition                                                                  #si 'cdt' est FALSE, le programme recommence
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 661
    Points : 1 159
    Points
    1 159
    Par défaut
    Salut,

    Assez simplement, tu peux remplacer un caractère d'une chaine par un autre avec la methode replace(). J'en ai profité pour modifier la fin du programme. si tu tape non (pourquoi pas), eh bien il y a 'o' dans 'non' !

    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
    cdt = False
    while (cdt == False) :
     
        eror = True                                
        while (eror == True) :                   
            try:
                chaine = input('\nEntrer un nombre : ')
                chaine = chaine.replace(',','.')
                nombre = float(chaine)
                inverse = 1.0/nombre
            except ValueError:
                print (">" + chaine + "< n'est pas un nombre !")
                eror = True                                                           
            except ZeroDivisionError:
                print ("Division par zéro !")
                eror = True                                          
            else:
                print ("L'inverse de",nombre,"est : ",inverse)
                eror = False                                                            
     
        condition = input("\nQuitter le programme ?\nOui => o\nNon => n\n")
        cdt = condition.startswith('o')

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Points : 321
    Points
    321
    Par défaut
    Bonjour

    Et si tu essayais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = chaine.replace(',','.')

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Si je saisis 123,45 il est évident que float("123,45)" va provoquer une erreur. C'est pour cela qu'il faut insérer la conversion virgule-point immédiatement après la saisie utilisateur, en tout cas avant le calcul.

    A+

    Pfeuh

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 10
    Points
    10
    Par défaut
    Merci à tous !
    ça marche

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 08/04/2013, 17h24
  2. Réponses: 1
    Dernier message: 02/11/2011, 01h12
  3. CSV -> Excel : Virgule comme séparateur par défaut
    Par ADbtr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/07/2010, 09h19
  4. Réponses: 13
    Dernier message: 03/12/2008, 13h54
  5. Réponses: 3
    Dernier message: 11/11/2005, 11h59

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