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

wxPython Discussion :

PB avec les points décimaux


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut PB avec les points décimaux
    Salut a vous tous,
    Je rencontre un problème pour pouvoir afficher du numérique avec des points décimaux.
    Je crée une définition soit pour additionner ou soustraire ou encore pour diviser, mais a l'affichage, je n'ai pas de décimal. (pas de reste)
    Je n'ai que des entiers.
    Et pourtant, a la récuppération des chiffres entrées, je les transféres bien en numérique, mais je n'y comprend plus rien a l'affichage, ce n'est que des entiers qui s'affiche.
    Voici mon code qui doit s'afficher dans une boîte de dialogue.
    Code:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    #On vacréer 2 boîte d'entrés, pui
    #On va récuppérer ces valeurs avec la fonction GetValue().
    #En tout premier on demande d'entrer le premier chiffre a additionner.
      n = wx.TextEntryDialog(self,"Entrez le premier chiffre  a additionner ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
     
    #afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
     
      reponse = n.ShowModal()
    #Récupération du text entré
     
      nn = n.GetValue()
     
    #En tout premier lieu, on vérifi si la chaine entrée est une chaine vide
      if nn == '': 
       nn = '0' #on force a mettre 0
       winsound.PlaySound('wav_cal/chaine_vide.wav', winsound.SND_NODEFAULT)
       d = wx.MessageDialog(self, "", " Pas de chaîne vide S.V.P !",   wx.OK)
       d.ShowModal()
       d.Destroy()
       return
      lnn = len(nn) #longueur de la chaine
      verification = 0
      for i in range(0, lnn):
       if ord(nn[i]) < 46 or ord(nn[i]) > 57:
        verification = 1
     
    #recuperation du nombre en un entier numerique
      if verification == 1:
       winsound.PlaySound('wav_cal/chaine_lettre.wav', winsound.SND_NODEFAULT)
       d = wx.MessageDialog(self, "", " Pas de lettre S.V.P!",   wx.OK)
       d.ShowModal()
       d.Destroy()
       return
       nb=0
       verification = 0
      else:
       nb = int(nn) 
     
     
    #Demande d'entrer le second chiffre ici
      nn1 = wx.TextEntryDialog(self,"Entrez le deuxième chiffre à additionner ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
      reponse = nn1.ShowModal()
      nn2 = nn1.GetValue()
       #On verifie si on a entrée autre  chose que des chiffres
    #En tout premier lieu, on vérifi si la chaine entrée est une chaine vide
      if nn2 == '': 
       nn2 = '0' #on force a mettre 0
       winsound.PlaySound('wav_cal/chaine_vide.wav', winsound.SND_NODEFAULT)
       d = wx.MessageDialog(self, "", " Pas de chaîne vide S.V.P !",   wx.OK)
       d.ShowModal()
       d.Destroy()
       return
      lnn = len(nn2) #longueur de la chaine
      verification = 0
      for i in range(0, lnn):
       if ord(nn2[i]) < 46 or ord(nn2[i]) > 57:
        verification = 1
     
     
       #recuperation du nombre en un entier numerique
      if verification == 1:
       winsound.PlaySound('wav_cal/chaine_lettre.wav', winsound.SND_NODEFAULT)
       d = wx.MessageDialog(self, "", " Pas de chaîne vide S.V.P !",   wx.OK)
       d.ShowModal()
       d.Destroy()
       return
       nb1 = 0
       verification = 0
      else:
       nb1 = int(nn2)
       resultat = nb+nb1  
     
     
    #Affichage du résultat dans la boîte de dialogue.
     
       d = wx.MessageDialog(self, ""+str(resultat),  "La réponse est ",   wx.OK)
       d.ShowModal()
       d.Destroy()

    J'ai fais des vérifications a savoir si c'est une chaine vide que les gens ont entré ou bien si c'est une lettre mais a l'affichage, j'ai par exemple si j'écris dans la boîte de dialogue 12.25 et bien a l'affichage, j'ai une erreur. Toutefois,
    si j'écris 12 dans la première boîte et 15 dans la deuxième j'ai bien la réponse 27 qui s'affiche.

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    Bonjour,

    Pas ton code sous les balises code ca sera plus lisible. car je vois des fautes je sais pas si c'est de frappes ou pas.
    Sinon pour l'histoire des nombres décimaux. Dans ta boite de dialogue, tu vas rentrer une chaîne. Tu vas transformer ta chaine en nombre.
    J'ai vu une ligne ou tu mets

    N.B: En relissant plus attentivement j'ai compris.
    Tu test après ta boite de dialogue si c'est vide ou non. Si ca l'est pas, tu transforme en nombre. D'ou le code suivant.

    Si tu mets cela tu transformes une chaine en entier. ca peut pas marcher

    Je viens de tester avec string.atoi c'est que les entiers qu'il traite. Dans ce cas

    Tu dois passer par
    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
    import re
    import string
     
    nbavvir = 0
    nbapvir = 0
    i = 0
    if re.search("[0-9].[0-9]", nn):
          while i < len(nn):
                nb = nn[i]
                if nb == ".":
                      ivir = i
                      nbavvir = string.atoi(nn[:ivir])
                i = i + 1
          m = string.atoi(nn[(ivir + 1):])
          n = len(nn) - (ivir + 1)
          nbapvir = round(((m + 0.0)/(10**n)), n)
          nb = nbavvir + nbapvir
    else:
          nb = string.atoi(nn)
    Je le conçois c'est usine à gaz, mais là, il transforme ta chaine en nombre que ca soit un entier ou un nombre. tu me diras j'ai pas testé.

    EDIT: J'ai modifié un peu pour que ca soit plus clair et puis ca me semblé plus correcte comme ca. Je suis aller un peu vite. Je teste et corrige...

    EDIT2: Corriger et tester

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Salut,
    Malheureusement, je n'ai pas réussi avec ce code.
    Il M'est impossible de le compiler car j'ai une erreur a la ligne
    nb=nn[i]
    Invalide instruction.
    Serais-t'il possible d'écrire une ligne seulement vu que j'ai déjà créé ma boucle for i in range?
    Y a t'il une seule ligne que je pourrais écrire pour récuppérer le text entré et de le convertir en numérique avec les point décimaux?
    regimari

Discussions similaires

  1. problème avec les nombres décimaux
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2008, 10h09
  2. Projet WinCE 5 : Problème avec les points d'arrêts
    Par arnoo91410 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 31/08/2007, 16h11
  3. [TP] Problème avec les points d'arrêt
    Par 8811fred dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 30/05/2007, 21h17
  4. pb avec les points de connection COM
    Par ali.ensi dans le forum Visual C++
    Réponses: 7
    Dernier message: 23/04/2007, 17h15
  5. problème avec les point sprites
    Par conrad dans le forum DirectX
    Réponses: 2
    Dernier message: 14/07/2005, 18h44

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