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 :

Erreur conversion str en int [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mars 2022
    Messages : 3
    Par défaut Erreur conversion str en int
    Bonjour,

    Je suis un débutant vraiment débutant et j'essaye d'addition deux élément (chiffres) d'une liste mais cela ne marche pas voici l'erreur :

    TypeError: unsupported operand type(s) for +: 'int' and 'str'

    J'ai déjà chercher sur d'autre forum mais je n'ai pas trouvé quelqu'un dans le même cas que moi. Si je comprend bien l'erreur il a réussie à convertir la première valeur en int mais pas la deuxième (pourtant les deux sont bien des chiffres)

    Voici mon code :

    Nom : image_2022-03-18_185118.png
Affichages : 131
Taille : 24,3 Ko


    Merci à tout ceux qui vont répondre et soyez indulgent je débute dans le langage python.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par ImmoGameGB Voir le message
    Je suis un débutant vraiment débutant et j'essaye d'addition deux élément (chiffres) d'une liste mais cela ne marche pas voici l'erreur :

    TypeError: unsupported operand type(s) for +: 'int' and 'str'
    Tu dois bien te douter que c'est normal que ça te ressorte ce style d'erreur. Peux-tu envisager par exemple l'opération "toto" + 5 ? Donc ben Python non plus. Donc il ne sait pas quoi faire, il te le dit.

    Citation Envoyé par ImmoGameGB Voir le message
    J'ai déjà chercher sur d'autre forum mais je n'ai pas trouvé quelqu'un dans le même cas que moi.
    Ben oui, ça arrive à tout le monde ce type d'erreur (souci de conversion) mais généralement ça ce résoud tellement facilement que personne ne va poser ça sur un forum.

    Citation Envoyé par ImmoGameGB Voir le message
    Si je comprend bien l'erreur il a réussie à convertir la première valeur en int mais pas la deuxième (pourtant les deux sont bien des chiffres)
    Hé bien justement non. S'il n'avait pas réussi à convertir la seconde valeur, il t'aurait dit "je n'arrive pas à convertir" (suffit de taper int("toto") dans Python pour voir ce qui se passe). Là il te dit qu'il tente d'additionner un int et un str or l'instruction int(num[1]), soit ne marche pas et renverra une erreur, soit marche et produit un int. Bref soit cette instruction fonctionne et fait l'addition, soit elle ne fonctionne pas parce qu'une des deux valeurs n'est pas convertible en int et il te dit "pas convertible". Mais jamais cette instruction int(num[0]) + int(num[1]) ne renverra l'erreur "je peux pas additionner int et str" parce que dans cette instruction il n'y a pas et il n'y aura jamais de str.
    Bref l'erreur vient d'ailleurs. Mais normalement il te donne la ligne en erreur ainsi que toutes les instructions qui ont fait qu'on arrive à cette ligne...

    Citation Envoyé par ImmoGameGB Voir le message
    et soyez indulgent je débute dans le langage python.
    Hum. Je vois quand-même du "self" dans ton code, ce qui sous-entend que tu es déjà dans l'objet qui est une notion déjà bien avancée et qui ne s'aborde que quand on maitrise les bases. Donc peut-être commencer d'abord par apprendre correctement les bases...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 322
    Par défaut
    bonjour et bienvenue

    il faut absolument éviter les copies écran !!! copier/coller texte (formaté avec la balise ['CODE']) est plus simple pour tout le monde

    Oui, ta partie de code n'est pas explicite, ajouter des "logs" et une copie exacte de la sortie aide
    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        print(1, ":", num[1], type(int(num[1]), int(num[1]))
    Je ne suis même pas sur que ton erreur vienne de ta dernière ligne : elle peut être aussi dans self.insertcmd() qui refuse d'insérer un entier ???

    Si tu es débutant, depuis ton erreur dans ce code complexe, tu peux écrire un simple petit script de 5..6 lignes pour reproduire ton cas

    Ici, dans ton code il n'y a aucun controle sur ton entrée "commande" (juste le "+"), donc il est impossible de savoir si le code peut fonctionner ou non. Juste sûr qu'il ne fonctionne pas dans tous les cas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    command = "a"
    try:
        int(command)
        # ok, je continue le code...
    except ValueError:
        print("oops pas une valeur numérique, je plante ici le script")
        raise

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    except ValueError:
        print("oops pas une valeur numérique, je plante ici le script")
        raise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    except ValueError as e:
        print("oops pas une valeur numérique, je plante ici le script")
        raise ValueError(e)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 322
    Par défaut
    [HS]
    ? il n'est pas valide de créer une nouvelle exception dans le block "except" (surtout ici la même) on ne fait que (mal) changer la ligne d'erreur

    par contre on peut écrire à la limite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        except ValueError as e:
            raise ValueError(f"{num} pas une valeur numérique valide") from e
    mais ici aussi on va créer une seconde exception, suis pas fan
    [/HS]

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mars 2022
    Messages : 3
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Tu dois bien te douter que c'est normal que ça te ressorte ce style d'erreur. Peux-tu envisager par exemple l'opération "toto" + 5 ? Donc ben Python non plus. Donc il ne sait pas quoi faire, il te le dit.


    Ben oui, ça arrive à tout le monde ce type d'erreur (souci de conversion) mais généralement ça ce résoud tellement facilement que personne ne va poser ça sur un forum.


    Hé bien justement non. S'il n'avait pas réussi à convertir la seconde valeur, il t'aurait dit "je n'arrive pas à convertir" (suffit de taper int("toto") dans Python pour voir ce qui se passe). Là il te dit qu'il tente d'additionner un int et un str or l'instruction int(num[1]), soit ne marche pas et renverra une erreur, soit marche et produit un int. Bref soit cette instruction fonctionne et fait l'addition, soit elle ne fonctionne pas parce qu'une des deux valeurs n'est pas convertible en int et il te dit "pas convertible". Mais jamais cette instruction int(num[0]) + int(num[1]) ne renverra l'erreur "je peux pas additionner int et str" parce que dans cette instruction il n'y a pas et il n'y aura jamais de str.
    Bref l'erreur vient d'ailleurs. Mais normalement il te donne la ligne en erreur ainsi que toutes les instructions qui ont fait qu'on arrive à cette ligne...


    Hum. Je vois quand-même du "self" dans ton code, ce qui sous-entend que tu es déjà dans l'objet qui est une notion déjà bien avancée et qui ne s'aborde que quand on maitrise les bases. Donc peut-être commencer d'abord par apprendre correctement les bases...
    Déja merci de ta réponse, et merci pour ces précisions je vais essayé de chercher dans les logs. Et pour mon niveau en python j'ai les bases j'ai juste copier ce code sur un autre forum j'ai commencé le python il y a 3 jours alors forcement ça aide pas.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mars 2022
    Messages : 3
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    except ValueError as e:
        print("oops pas une valeur numérique, je plante ici le script")
        raise ValueError(e)
    MERCI, grâce à ta documentation sur le shell j'ai trouvé l'erreur elle provenait bien d'une ligne plus haut merci beaucoup et désolé pour le dérangement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/06/2015, 14h13
  2. Conversion de str en int
    Par wolvi01 dans le forum Général Python
    Réponses: 1
    Dernier message: 15/01/2011, 17h37
  3. Conversion VARCHAR vers INT
    Par Slash dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/05/2005, 10h43
  4. [VB.NET] Erreur conversion de code c=>vb (opendialogfile)
    Par hirochirak dans le forum Windows Forms
    Réponses: 19
    Dernier message: 02/06/2004, 16h31
  5. [FLASH MX 2004] conversion string en int.
    Par calfater dans le forum Flash
    Réponses: 3
    Dernier message: 26/05/2004, 15h00

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