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 :

"'int' object is not callable"


Sujet :

Python

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut "'int' object is not callable"
    Bon voilà, j'apprends vraiment par moi-même en regardant des exemples, donc je n'ai pas vraiment la terminologie propre à python et regarder la FAQ me donne une impression de rien y connaître.

    Donc, je pose directement ma question, espérant qu'elle ne soit pas dans la FAQ.

    À nouveau, j'ai une erreur de syntaxe/compilation en faisant un problème du projet Euler. Je suis parvenu à ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def factorial(n): ...
     
    facts = [factorial(x) for x in range(10)]
    sum = 0
    for n in range(10, 50000):
        if n == sum(facts[int(d)] for d in str(n)):
            sum += n
    print(sum)
    Mais j'obtiens une erreur "TypeError: 'int' object is not callable" avec Python 3.1. En regardant les solutions proposées par les précédents, je suis tombé sur une qui est parfaitement identique à la mienne (hormis le nom des variables) et je suppose qu'elle a été développée avec Python 2.x. Donc mon code devrait compiler avec cette version.

    Comment puis-je corriger mon code pour python 3 et de manière plus générale, où puis-je trouver une liste des différences entre python 2.x et 3.x qui soit compréhensible pour un débutant ?

    D'avance merci,

    Olivier

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Bon, solution trouvée : il s'agissait du mot sum qui était commun au nom des variable et méthode. Donc python était confus. Changer le nom de la variable a suffi pour avoir un programme qui fonctionne.

  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
    Citation Envoyé par dingoth Voir le message
    Bon, solution trouvée : il s'agissait du mot sum qui était commun au nom des variable et méthode. Donc python était confus. Changer le nom de la variable a suffi pour avoir un programme qui fonctionne.
    Python vient avec un certain nombre de fonctions prédéfinies dites builtins

    Python est permissif! En écrivant sum = 0, on "écrase" la fonction prédéfinie en la remplaçant par un entier.

    Ceci dit, __builtin__ est un module comme les autres, on peut donc faire:
    import __builtin__ as b # Python3 devrait permettre import builtin
    et accéder aux fonctions "prédéfinies" telle que sum via b.sum

    Mais ce n'est pas un module comme les autres car "importé" par défaut lors du chargement de n'importe quel "module", on peut "hacker" des variables globales.

    - W
    PS: Avec Python, il faut apprendre à penser dict
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. erreur : 'int' object is not callable
    Par aschreck dans le forum Général Python
    Réponses: 2
    Dernier message: 06/04/2012, 15h36
  2. Réponses: 2
    Dernier message: 01/04/2011, 09h20
  3. object is not callable
    Par rezguiinfo dans le forum Général Python
    Réponses: 6
    Dernier message: 30/01/2011, 13h43
  4. TypeError: 'file' object is not callable
    Par MariemEA dans le forum Général Python
    Réponses: 7
    Dernier message: 09/07/2010, 21h57
  5. TypeError: 'int' object is not iterable
    Par manaliac dans le forum Général Python
    Réponses: 15
    Dernier message: 29/06/2010, 11h24

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