Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème fonction len()

Sujet résolu
    22 mai 2011 à 22:11:01

    Bonjour !

    Un simple petit problème :

    # Fonctionne 
    print(len(list[4]))
    
    # Ne fonctionne pas 
    print(len(list[i]))
    


    TypeError: 'int' object is not callable


    Je suis complètement perdu, je n'arrive pas à comprendre pourquoi le premier appel à len() ne fonctionne pas.
    J'utilise Python 3.2

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2011 à 22:30:35

      Quel est le contexte de cette erreur ? Habituellement, elle arrive lorsque tu essaies d'utiliser quelque chose qui ne peut pas être appelé, genre ceci :
      len = 5
      print(len(ta_list[0]))
      


      Évidemment, c'est étrange que ça fonctionne dans un des cas mais pas dans l'autre, mais avec le contexte, il serait peut-être plus facile de trouver la source de l'erreur.
      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2011 à 22:34:35

        # Programme qui trie une liste en deux catégories : moins de 6 caractères, ou plus.
        
        list = ["Test", "Teest", "plkojkokj", "pkpkppjpjp", "kjp"]
        moins = []
        plus = []
        
        len = len(list)
        i = 0
        
        while (i < len):
            if (len(list[i]) > 6):
                plus.append(list[i])
            else:
                moins.append(list[i])
            i = i + 1
        
        print(moins)
        print(plus)
        input()
        
        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2011 à 22:38:08

          À la ligne 7, tu "détruis" la fonction len : tu la remplaces par un nombre. Avec d'autres langages (genre, PHP), il est interdit de faire ce genre de choses, mais c'est permis en Python. Bref, passé la ligne 7, len correspond à un nombre et plus à une fonction, c'est pourquoi ça plante à la ligne 11. Change le nom de ta variable et ça devrait fonctionner.

          P.S. Même chose pour list, d'ailleurs. Ce serait probablement mieux que tu choisisses un autre nom.
          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2011 à 22:44:19

            Merci beaucoup ça marche nickel.
            • Partager sur Facebook
            • Partager sur Twitter
              22 mai 2011 à 22:49:59

              Une remarque : en Python il n'est pas utile de tout mettre entre parenthèses (veilles habitudes c/php ?) :

              while i < len:
                  if len(list[i]) > 6:
                      ...
              


              ça allège quand même le code =)
              • Partager sur Facebook
              • Partager sur Twitter
                22 mai 2011 à 23:23:47

                Oui je sais, mais je trouve ça plus clair.
                • Partager sur Facebook
                • Partager sur Twitter

                Problème fonction len()

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown