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 :

invalid literal for int() with base 10: ''


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut invalid literal for int() with base 10: ''
    Bonsoir,
    Voilà voilà j'ai un petit problème avec un programme et celui-ci me trotte dans la tête depuis quelques jours

    Je dois créer un programme calculant l'IMC d'une personne pour ensuite dire si elle mange peu/bien/trop

    J'ai réussi à calculer l'IMC mon seul problème est de ne pas réussir à dire comment la personne mange, le code invalid literal for int() with base 10: '' s'affiche pour la ligne 39

    Je ne comprends pas ce que ça veut dire et donc comment résoudre mon problème

    Voici mon programme:

    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
    from tkinter import *
     
    fenetre=Tk()
    fenetre.configure(bg="yellow",width=600,height=200)
     
    def val ():
     
        f_IMC=Label(fenetre,text="Votre IMC est de: ",bg='red',fg='yellow')
        f_IMC.place(x=350,y=10)
     
        nombre_poids=float(poids_personne.get())
        nombre_taille=float(taille_personne.get())
        nombre_IMC=nombre_poids/(nombre_taille**2)
     
        IMC=0
        IMC=int(nombre_IMC)
     
        fe_IMC=Label(fenetre,text=IMC,bg='red',fg='yellow')
        fe_IMC.place(x=500,y=10)
        return(IMC)
     
    poids=Label(fenetre,text="Indiquez votre poids (en kg)",bg='red',fg='yellow')
    poids.place(x=10,y=10)
     
    poids_personne=Entry(fenetre,bg='red',fg='yellow')
    poids_personne.place(x=200,y=10)
     
    taille=Label(fenetre,text="Indiquer votre taille (en m)",bg='red',fg='yellow')
    taille.place(x=10,y=50)
     
    taille_personne=Entry(fenetre,bg='red',fg='yellow')
    taille_personne.place(x=200,y=50)
     
    IMC=''
     
    valider=Button(fenetre,text="Valider",command=val,bg='red',fg='yellow')
    valider.place(x=10,y=100)
     
    pasassez=PhotoImage(file="pasassez.gif")
    bien=PhotoImage(file="bien.gif")
    trop=PhotoImage(file="trop.gif")
     
    if int(IMC)< 18:
        pas_assez=Label(fenetre,text='Vous ne mangez pas assez!',bg='red',fg='yellow')
        pas_assez.place(x=350,y=100)
        C=Canvas(fenetre,width=30,height=30,bg='yellow')
        C.place(x=400,y=40)
        C.create_image(18,15,image=pasassez)
     
    else:
        if int(IMC)> 25:
            trop=Label(fenetre,text='Vous mangez trop!',bg='red',fg='yellow')
            trop.place(x=350,y=100)
            C=Canvas(fenetre,width=30,height=30,bg='yellow')
            C.place(x=400,y=40)
            C.create_image(18,15,image=bien)
        else:
          bien=Label(fenetre,text='Vous mangez bien!',bg='red',fg='yellow')
          bien.place(x=350,y=100)
          C=Canvas(fenetre,width=30,height=30,bg='yellow')
          C.place(x=400,y=40)
          C.create_image(18,15,image=trop)
     
    fenetre.mainloop()
    Pourriez vous m'aider?

    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IMC=''
     
    ...
     
    if int(IMC)< 18:
    Si IMC est une chaîne vide, que peut donner int('') ?

    Même réponse pour ta collègue de cours qui a posté juste avant toi. Je réalise que c'est toi-même ...

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Eh bien j'ai mis ça un peu par hasard, parce que j'avais une notification du style str() < int () et lorsque que j'ai changé IMC <18 en int(IMC)<18 je n'avais plus cette notification :/

    Eh oui c'est bien moi, j'avais posté sur un autre forum déjà résolu mais le modérateur m'a conseillé d'ouvrir un autre forum à la place

  4. #4
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Mini-minimoys Voir le message
    Je dois créer un programme calculant l'IMC d'une personne pour ensuite dire si elle mange peu/bien/trop

    J'ai réussi à calculer l'IMC mon seul problème est de ne pas réussir à dire comment la personne mange, le code invalid literal for int() with base 10: '' s'affiche pour la ligne 39

    Je ne comprends pas ce que ça veut dire et donc comment résoudre mon problème
    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
    from tkinter import *
     
    fenetre=Tk()
    fenetre.configure(bg="yellow",width=600,height=200)
     
    def val ():
     
        f_IMC=Label(fenetre,text="Votre IMC est de: ",bg='red',fg='yellow')
        f_IMC.place(x=350,y=10)
     
        nombre_poids=float(poids_personne.get())
        nombre_taille=float(taille_personne.get())
        nombre_IMC=nombre_poids/(nombre_taille**2)
     
        IMC=0
        IMC=int(nombre_IMC)
     
        fe_IMC=Label(fenetre,text=IMC,bg='red',fg='yellow')
        fe_IMC.place(x=500,y=10)
        return(IMC)
     
    poids=Label(fenetre,text="Indiquez votre poids (en kg)",bg='red',fg='yellow')
    poids.place(x=10,y=10)
     
    poids_personne=Entry(fenetre,bg='red',fg='yellow')
    poids_personne.place(x=200,y=10)
     
    taille=Label(fenetre,text="Indiquer votre taille (en m)",bg='red',fg='yellow')
    taille.place(x=10,y=50)
     
    taille_personne=Entry(fenetre,bg='red',fg='yellow')
    taille_personne.place(x=200,y=50)
     
    IMC=''
     
    valider=Button(fenetre,text="Valider",command=val,bg='red',fg='yellow')
    valider.place(x=10,y=100)
     
    pasassez=PhotoImage(file="pasassez.gif")
    bien=PhotoImage(file="bien.gif")
    trop=PhotoImage(file="trop.gif")
     
    if int(IMC)< 18:
        pas_assez=Label(fenetre,text='Vous ne mangez pas assez!',bg='red',fg='yellow')
        pas_assez.place(x=350,y=100)
        C=Canvas(fenetre,width=30,height=30,bg='yellow')
        C.place(x=400,y=40)
        C.create_image(18,15,image=pasassez)
     
    else:
        if int(IMC)> 25:
            trop=Label(fenetre,text='Vous mangez trop!',bg='red',fg='yellow')
            trop.place(x=350,y=100)
            C=Canvas(fenetre,width=30,height=30,bg='yellow')
            C.place(x=400,y=40)
            C.create_image(18,15,image=bien)
        else:
          bien=Label(fenetre,text='Vous mangez bien!',bg='red',fg='yellow')
          bien.place(x=350,y=100)
          C=Canvas(fenetre,width=30,height=30,bg='yellow')
          C.place(x=400,y=40)
          C.create_image(18,15,image=trop)
     
    fenetre.mainloop()
    Pourriez vous m'aider?
    Bonjour,
    En suivant l'exécution du script, je note:
    - définition d'une fonction (sans paramètre)
    - création de la fenêtre
    - le traitement de l'IMC dans la foulée
    => la valeur de l'IMC ne peut jamais être calculée puisque la fonction ne peut être appelée que par un bouton.
    => le traitement est toujours réalisé à la suite de la création de la fenêtre (il est impossible d'entrer les valeurs avant le traitement).

    Pour résoudre ceci, il suffit de placer le traitement dans la fonction (ou à sa suite) et cette fonction doit vérifier que toutes les valeurs sont bien présentes!

    Clodion

    PS:
    - la fonction "val" revoie une valeur qui n'est jamais récupérée.
    - la structure "if" peut aussi contenir "elif"… ce qui est plus lisible qu'une hiérarchie de "if"

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Problème résolu
    Merci, votre explication m'a été bien utile

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

Discussions similaires

  1. [V8] ValueError: invalid literal for int() with base 10
    Par chagala dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 28/05/2015, 09h27
  2. erreur :invalid types ‘bool[int]’ for array subscript
    Par ferhat.adel dans le forum Débuter
    Réponses: 1
    Dernier message: 10/06/2013, 18h56
  3. test.py : ValueError: invalid literal for int()
    Par black-falco dans le forum Django
    Réponses: 2
    Dernier message: 05/08/2011, 12h11
  4. [Débutant] invalid literal for int() with base 10: '\r'
    Par oodini dans le forum Général Python
    Réponses: 19
    Dernier message: 23/03/2011, 15h25
  5. invalid literal for int() with base 10:
    Par EricStib dans le forum Général Python
    Réponses: 9
    Dernier message: 05/01/2009, 13h22

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