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 de code avec la fonction input()


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Septembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut erreur de code avec la fonction input()
    bonjour a tous,

    je suis novice avec le language python ,
    j'aime qu'on mexplique le problème de mon erreur de coding :

    j'utilise la version 3.9 de python.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #coding:utf-8
     
    nomSaisir = input("Saisir le nom de votre choix : ")
     
    print("Bonjour a Vous, " , nomSaisir)
    je m'explique,

    J'ai voulu faire un code test_script afin de pratiquer,
    quand je lance mon script ( "code si dessus : ") sur ma console
    il affiche bien la phrase "Saisir le nom de votre choix : " , je rentre le nom : exemple toto et voici l'erreur qui'l m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    toto@toto~/ $ python code_ref_01_01
    Saisir le nom de votre choix : toto
    Traceback (most recent call last):
      File "code_ref_01_01", line 5, in <module>
        nomSaisir = input("Saisir le nom de votre choix : ")
      File "<string>", line 1, in <module>
    Alors que quand je rentre un entier : exemple 10 ,
    le script fonctionne parfaitement .

    Il m'affiche bien la phrase " ('Bonjour a Vous, ', 10).

    dans se code aussi ,
    J'ai une erreur quand rentre un entier est voici l'erreur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    toto@toto ~/ $ python test_script2.py
    Entrez un nombre : 10
    Traceback (most recent call last):
      File "test_script2.py", line 9, in <module>
        if( nbr.isdigit()):
    AttributeError: 'int' object has no attribute 'isdigit'


    merci d'avance la communauté,

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    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 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par novicecoding Voir le message
    j'aime qu'on mexplique le problème de mon erreur de coding :
    Fais commencer tes scripts par ces deux lignes
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/usr/bin/env python3
    # coding: utf-8
    La première indique à ton OS qu'il doit utiliser Python3 pour traiter ton script et la seconde que ton script est encodé en utf8 (nécessaire quand il y a des strings contenant des lettres accentuées). Parce qu'en l'état, ce code...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/env python3
    # coding: utf-8
     
    nomSaisir = input("Saisir le nom de votre choix : ")
     
    print("Bonjour a Vous, " , nomSaisir)
    ... fonctionne parfaitement chez-moi.

    Citation Envoyé par novicecoding Voir le message
    dans se code aussi ,
    Mouais t'as raison, laisse nous deviner le code sinon ce serait trop facile. Et puis c'est "ce code" (ce=pronom démonstratif => on montre de quoi il s'agit) et non "se code" (se=pronom personnel)

    Citation Envoyé par novicecoding Voir le message
    J'ai une erreur quand rentre un entier est voici l'erreur !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    toto@toto ~/ $ python test_script2.py
    Entrez un nombre : 10
    Traceback (most recent call last):
      File "test_script2.py", line 9, in <module>
        if( nbr.isdigit()):
    AttributeError: 'int' object has no attribute 'isdigit'
    C'est exact, un objet "in" n'a pas d'attribut "isdigit". C'est l'objet "str" qui en possède un. Rajoute ces deux lignes...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    print(sys.version)
    ... en début de ton code. Quelque chose me dit qu'on verra apparaitre 2.7.16 (default, Apr 6 2019, 01:42:57) montrant que tu es sous Python2 et non pas Python3 comme tu le dis...
    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 éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par novicecoding Voir le message
    j'utilise la version 3.9 de python.

    C'est une hypothèse à vérifier en regardant la sortie de "python --version".

    En général, sous Linux, lancer python v3 se fait avec python3 (mais sur votre machine, ça dépend de ce qui a été fait).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Septembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,
    ........ a été fait).

    - W
    merci pour l'aide W,

    pour le deuxieme code , j'ai toujours une erreur. ( donc si je regarde la fonction , que tu ma donné pour la version python ; est la version 2.7.17 si j'ai bien compris ? .)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .7.17 (default, Feb 27 2021, 15:10:58)                                                           
    [GCC 7.5.0]                                                                                        
    Entrez un nombre : 10                                                                              
    Traceback (most recent call last):                                                                 
      File "test_script2.py", line 11, in <module>                                                      
        if( nbr.isdigit()):                                                                             
    AttributeError: 'int' object has no attribute 'isdigit'

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 8
    Points
    8
    Par défaut isdigit(je fait quoi pourquoi)
    Comme dit plus haut par -w tu doit faire attention à bien gérer l'attribue et la logique de base aussi de ta syntaxe de ta méthode. la base est string.isdigit() , donc il me semble que "nb." génère un type int mais comme tu as modifier ton script mes que on a rien a se mettre sous la dent ,je fait que des suppositions sur la possible erreur. Si ta modifier ton script est fait une variable du genre nb = 10 pour faire un test te voila un pied en dehors de ta méthode. Un truc important place ton script + erreur et a chaque modification faudrait au mieux relancer le tous.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par novicecoding Voir le message
    donc si je regarde la fonction , que tu ma donné pour la version python ; est la version 2.7.17 si j'ai bien compris ? .)
    Avec Python 2, input récupère la saisie et évalue l'expression...
    Et la saisie d'une suite de digits retourne un entier (qui n'a pas de méthode .is_digit).
    Pour avoir une chaine de caractères dans tous les cas, il faut utiliser raw_input (le "raw_" disant de ne pas évaluer l'expression).

    Il serait préférable que vous trouviez comment lancer Python3 sur votre machine (normalement avec "python3", çà devrait marcher) car Python 2 n'étant plus supporté... ça ne vous apportera pas grand chose de commencer avec cette version là.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    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 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par novicecoding Voir le message
    merci pour l'aide W,
    Ouais, de rien.

    Citation Envoyé par novicecoding Voir le message
    ( donc si je regarde la fonction , que tu ma donné pour la version python ; est la version 2.7.17 si j'ai bien compris ? .)
    Oh? Quelle surprise!!! C'est vrai que de mon côté je n'avais rien dit à ce sujet.
    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]

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 8
    Points
    8
    Par défaut (method string) petit rajout (url )sur ta fiche ça complète pour les curieux
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Avec Python 2, input récupère la saisie et évalue l'expression...
    Et la saisie d'une suite de digits retourne un entier (qui n'a pas de méthode .is_digit).
    Pour avoir une chaine de caractères dans tous les cas, il faut utiliser raw_input (le "raw_" disant de ne pas évaluer l'expression).

    Il serait préférable que vous trouviez comment lancer Python3 sur votre machine (normalement avec "python3", çà devrait marcher) car Python 2 n'étant plus supporté... ça ne vous apportera pas grand chose de commencer avec cette version là.

    - W
    https://www.w3schools.com/python/python_ref_string.asphttps://www.w3schools.com/python/ref_string_isdigit.asp

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par roboxo Voir le message
    Please me dit pas que le S de superman sur son costume veut dire brouette . (method string)
    Le message d'erreur est: AttributeError: 'int' object has no attribute 'isdigit'

    Si on récupère ce que retourne input en V2 lorsque c'est une suite de digits, il s'agit bien d'un entier (qui n'a pas de méthode isdigit comme le dit message d'erreur).

    Apprenez à lire et essayez de comprendre le problème avant de manifester votre ego de façon imbécile. Voilà une occupation bien plus bénéfique (pour vous).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouais, de rien.


    Oh? Quelle surprise!!! C'est vrai que de mon côté je n'avais rien dit à ce sujet.
    Le jaloux !

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Le message d'erreur est: AttributeError: 'int' object has no attribute 'isdigit'

    Si on récupère ce que retourne input en V2 lorsque c'est une suite de digit, il s'agit bien d'un entier (qui n'a pas de méthode isdigit comme le dit message d'erreur).

    Apprenez à lire et essayez de comprendre le problème avant de manifester votre ego de façon imbécile. Voilà une occupation bien plus bénéfique (pour vous).

    - W
    Ne nous fourvoyons pas , j'ai changer mon message car effectivement c'est maladroit mais en tous cas loin de vouloir d'être dans soit disant mon ego, et pour faire référence a mon premier message , je te soutien en répétant à notre chère ami qu'il doit bien faire attention a son erreur et se que tu a écrit et j'offre une possible réponse sur l'avis que j'avais sur le sujet.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par novicecoding Voir le message
    merci pour l'aide W,

    pour le deuxieme code , j'ai toujours une erreur. ( donc si je regarde la fonction , que tu ma donné pour la version python ; est la version 2.7.17 si j'ai bien compris ? .)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .7.17 (default, Feb 27 2021, 15:10:58)                                                           
    [GCC 7.5.0]                                                                                        
    Entrez un nombre : 10                                                                              
    Traceback (most recent call last):                                                                 
      File "test_script2.py", line 11, in <module>                                                      
        if( nbr.isdigit()):                                                                             
    AttributeError: 'int' object has no attribute 'isdigit'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #pour que tu visualise sur un exemple basique, ici tu obtiendra ton erreur 
    x = 10 
     
    print(x.isdigit())
     
    #pour que tu visualise sur un exemple basique, ici tu n'a plus d'erreur
    x = "10"
     
    print(x.isdigit())
     
    #renvoi True 
     
    #c'est parfois plus simple de faire simple pour comprendre une erreur

Discussions similaires

  1. erreur de linkage avec une fonction extern
    Par ali.ensi dans le forum C
    Réponses: 5
    Dernier message: 12/03/2008, 23h23
  2. Erreur de code avec Ajax
    Par sadkat dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 14/02/2008, 14h55
  3. Explication de code avec la fonction map
    Par mlny84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/10/2007, 13h59
  4. erreur de code avec target
    Par dado91400 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/07/2007, 18h31
  5. Réponses: 2
    Dernier message: 17/05/2006, 11h43

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