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 :

Problème de conversion de types


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 57
    Points : 46
    Points
    46
    Par défaut Problème de conversion de types
    Bonjour,

    Dans le cadre d'études, je dois réaliser un programme de devis sur base d'un contrat cadre, pour e faire, je doir rentrer certaines données et récupérer celles-ci pour pouvoir calculer les valreur à retourner.

    Je me trouve devant un problème de converstion de type, en effet dans le code suivant:

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    # -*- coding: UTF-8 -*-
     
     
    # Importation des module graphiques
    from Tkinter import *
    import tkFont
     
     
     
    # Creation de la fenêtre principale
    Mafenetre= Tk()
    # On impose à la fenêtre de s'ouvrir "plein écran"
    Mafenetre.wm_state(newstate="zoomed")
     
    Mafenetre.title('test')
    Mafenetre.configure(bg = 'lightblue', padx = 10, pady = 10)
    Mafenetre.resizable(True,  True)
    police=tkFont.Font(Mafenetre, weight = 'bold',  size = '10' )
    police1=tkFont.Font(Mafenetre, weight = 'bold',  size = '12' )
     
     
    """=============================================================================
    Distance façades - égout
    ============================================================================="""
     
    # Création d'un label (distance façades - égout)
    Distance = Label(Mafenetre, text = "Entrez la distance façades -> egout : ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    Distance.grid(row = 0, column = 0, pady = 5, padx = 20, sticky = 'W')
     
    # Création d'une entrée (pour la distance)
    Dist = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police)
    # positionnement
    Dist.grid(row = 0, column = 1)
    MetreDist = Label(Mafenetre, text = "M", bg= 'lightblue', font = police)
    MetreDist.grid(row = 0, column = 2, sticky = 'W')
     
    """=============================================================================
    Largeur de trottoir
    ============================================================================="""
     
    # Création d'un label (Largeur de trottoir)
    Trottoir = Label(Mafenetre, text = "Quelle est la Largeur de trottoir ? ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    Trottoir.grid(row = 0, column = 3, pady = 5, padx = 20, sticky = 'W')
     
    # Création d'une entrée (pour le trottoir)
    Trott = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police)
    # positionnement
    Trott.grid(row = 0, column = 4)
    MetreTrott = Label(Mafenetre, text = "M", bg= 'lightblue', font = police)
    MetreTrott.grid(row = 0, column = 5, sticky = 'W')
     
    """=============================================================================
    Largeur de stationnement
    ============================================================================="""
     
    # Création d'un label (Largeur de stationnement)
    Stationnement = Label(Mafenetre, text = "Quelle est la Largeur de stationnement ? ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    Stationnement.grid(row = 0, column = 6, pady = 5, padx = 20, sticky = 'W')
     
    # Création d'une entrée (pour le trottoir)
    Stat = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police)
    # positionnement
    Stat.grid(row = 0, column = 7)
    MetreStat = Label(Mafenetre, text = "M", bg= 'lightblue', font = police)
    MetreStat.grid(row = 0, column = 8, sticky = 'W')
     
    """=============================================================================
    Largeur de la voirie (que l'on peut déterminer grâce aux données déja entrées)
    ============================================================================="""
     
    aDist = float(Dist.get())
    bTrott = float(Trott.get())
    cStat = float(Stat.get())
    Voirie = aDist-bTrott-cStat
    Voirie1 = round(Voirie)
    LabelResultVoirie.config(text = str(Voirie1)+ ' M')
     
    # Création d'un label (Largeur de voirie)
    LabelVoirie = Label(Mafenetre, text = "La largeur de voirie est donc de : ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    LabelVoirie.grid(row = 1, column = 2, pady = 5, padx = 20, sticky = 'W')
    # Création d'un label (Résultat largeur de voirie)
    LabelResultvoirie = Label ( bg = 'lightblue',  fg = 'red',  font = police1)
    LabelResultvoirie.grid(row = 1, column = 3)
     
     
    # Ouvertue de la fenêtre à l'écran
    Mafenetre.mainloop()
    A partir de la ligne 75 j'ai le message : "ValueError: could not convert string to float:"

    comment faire pour récupérer ces valeurs en float ?

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il faudrait vérifier avec un print que la valeur de "Dist.get()" est bien une chaine qui représente un flottant. En effet, on obtient la même erreur avec float("xxx") ce qui, bien sûr, n'a aucun sens.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Pour voir ce que retourne Dist.get(), vous pouvez faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print 'Dist.get()=/%s/' % Dist.get()
    Comme l'application vient a peine d’être initialisée, ça retourne la chaîne de caractères vide. Pour traiter ce cas particulier, vous pouvez:

    DEFAULT = la valeur par défaut.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Tout dabord, merci pour ces réponses rapide
    Citation Envoyé par wiztricks Voir le message
    Salut,
    Pour voir ce que retourne Dist.get(), vous pouvez faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print 'Dist.get()=/%s/' % Dist.get()
    Comme l'application vient a peine d’être initialisée, ça retourne la chaîne de caractères vide. Pour traiter ce cas particulier, vous pouvez:

    DEFAULT = la valeur par défaut.
    - W
    Si je comprends bien, il me faudra écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dist = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police, textvariable = dist_var)
    dist_var = DoubleVar(value=float(0.00))
    Pour chaque variable que je définit ? (ici l'exemple avec Dist)

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    L'une des 3 options suffit.
    Si vous choisissez "textvariable", inversez la séquence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dist = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police, textvariable = dist_var)
    dist_var = DoubleVar(value=float(0.00))
    sinon l’interpréteur va râler.
    Par défaut, DoubleVar() initialise le float avec 0 ne le changer que si nécessaire.

    Si je comprends bien, il me faudra écrire:
    ...
    Pour chaque variable que je définit ? (ici l'exemple avec Dist)
    Hu?! Si vous retenez cette option, "pour chaque" pourrait se traduire par une l'instance d'un objet compose d'une Entry et d'une Variable.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Merci,

    Cela fonctionne pour l'affichage, par contre ensuite:
    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
     
    """=============================================================================
    Distance façades - égout
    ============================================================================="""
     
    # assignation d'un type à la variable entrée
    dist_var = DoubleVar(value = float(10.00))
    # Création d'un label (distance façades - égout)
    Distance = Label(Mafenetre, text = "Entrez la distance façades -> egout : ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    Distance.grid(row = 1, column = 6, pady = 5, padx = 20, sticky = 'W')
     
    # Création d'une entrée (pour la distance)
    Dist = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police, textvariable = dist_var)
    # positionnement
    Dist.grid(row = 1, column = 7)
    MetreDist = Label(Mafenetre, text = "M", bg= 'lightblue', font = police)
    MetreDist.grid(row = 1, column = 8, sticky = 'W')
     
    """=============================================================================
    Largeur de trottoir
    ============================================================================="""
     
    # assignation d'un type à la variable entrée
    trott_var = DoubleVar(value = float(3.00))
    # Création d'un label (Largeur de trottoir)
    Trottoir = Label(Mafenetre, text = "Quelle est la Largeur de trottoir ? ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    Trottoir.grid(row = 2, column = 0, pady = 5, padx = 20, sticky = 'W')
     
    # Création d'une entrée (pour le trottoir)
    Trott = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police, textvariable = trott_var)
    # positionnement
    Trott.grid(row = 2, column = 1)
    MetreTrott = Label(Mafenetre, text = "M", bg= 'lightblue', font = police)
    MetreTrott.grid(row = 2, column = 2, sticky = 'W')
     
    """=============================================================================
    Largeur de stationnement
    ============================================================================="""
     
    # assignation d'un type à la variable entrée
    stat_var = DoubleVar(value = float())
    # Création d'un label (Largeur de trottoir)
    Stationnement = Label(Mafenetre, text = "Quelle est la Largeur de stationnement ? ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    Stationnement.grid(row = 2, column = 3, pady = 5, padx = 20, sticky = 'W')
     
    # Création d'une entrée (pour le trottoir)
    Stat = Entry(Mafenetre , width = 20,  bg = 'bisque',  font = police, textvariable = stat_var)
    # positionnement
    Stat.grid(row = 2, column = 4)
    MetreStat = Label(Mafenetre, text = "M", bg= 'lightblue', font = police)
    MetreStat.grid(row = 2, column = 5, sticky = 'W')
     
    """=============================================================================
    Largeur de la voirie (que l'on peut déterminer grâce aux données déja entrées)
    ============================================================================="""
     
     
    aDist = float(Dist.get())
    bTrott = float(Trott.get())
    cStat = float(Stat.get())
    Voirie = aDist-bTrott-cStat
    Voirie1 = round(Voirie)
     
     
    # Création d'un label (Largeur de voirie)
    LabelVoirie = Label(Mafenetre, text = "La largeur de voirie est donc de : ",  bg = 'lightblue',  font = police)
    #positionnement du label avec la methode pack()
    LabelVoirie.grid(row = 2, column = 6, pady = 5, padx = 20, sticky = 'W')
    # Création d'un label (Résultat largeur de voirie)
    LabelResultvoirie = Label ( bg = 'lightblue',  fg = 'red',  font = police1, text = str(Voirie1) + 'M')
    LabelResultvoirie.grid(row = 2, column = 7)
     
     
    # Ouvertue de la fenêtre à l'écran
    Mafenetre.mainloop()
    le résultat dans LabelResultVoirie reste bloqué à zéro quoique je remplisse dans les entry

    Serais-je donc obligé de passer par un "Button" ?

Discussions similaires

  1. [C# 2.0] Problème de conversion de type
    Par freerider1 dans le forum Windows Forms
    Réponses: 18
    Dernier message: 11/08/2017, 13h50
  2. Problème de conversion de type de données
    Par ruzakruzak dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/06/2007, 10h51
  3. Problème de conversion de types
    Par Rayndell dans le forum C++
    Réponses: 2
    Dernier message: 25/05/2007, 10h45
  4. [WD10] Problème de conversion de type
    Par rphenix dans le forum WinDev
    Réponses: 2
    Dernier message: 15/01/2007, 14h22
  5. [Excel] Problème de conversion de type de données
    Par keiserjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 12h26

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