Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème 'int' not iterable

    12 novembre 2014 à 17:29:33

    def t(n): 
        if n == 1 : 
            return 1  
        elif n % 2 == 0 :
            return t(n/2) + 1
        else :
            return t(3*n+1) + 1
       
    

    Bonjour! D'abord j'ai crée cette fonction qui n'a aucun problème.

    Ensuite, j'essaye d'afficher le nombre (entre 0 et 99) le plus grand qui résulte de cette fonction.

    Donc je fais 

    for i in range(0,100):
        liste=t(i)
        print(max(liste))
        

    Mais il y a une erreur à la dernière ligne qui dit  'int' object is not iterable

        Je ne comprend pas, quelqu'un pourrait m'expliquer svp? Je galère...

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      12 novembre 2014 à 17:40:17

      Tu lui demande d'afficher le max d'un entier, or max() attend plusieurs paramètres (ou du moins un iterable contenant des paramètres). De plus ce code ne fait pas ce que tu veux, à la ligne 2, tu efface à chaque fois la valeur précédente de liste, qui n'est rien de plus qu'un entier.

      Tu devrais mettre une liste à l'extérieur de la boucle, puis ajouter chaque nouvel élément à la fin de la liste à chaque tour de boucle, grâce à la méthode append(). Ensuite, une fois la boucle finie, tu regarde le maximum de ta liste ;)

      • Partager sur Facebook
      • Partager sur Twitter
        15 novembre 2014 à 20:22:39

        liste = []
        for i in range(0,100):
            liste.append(t(i))
        print(max(liste))
        

        non testé
        mieux:
        maxi= 0
        for i in range(0,100):
            if t(i) > maxi:
                maxi=t(i)
        
        print(maxi)


        non testé

        -
        Edité par ast2 15 novembre 2014 à 20:25:24

        • Partager sur Facebook
        • Partager sur Twitter
          15 novembre 2014 à 20:35:31

          Le but c'était qu'il trouve tout seul

          Enfin bon en non testé tu peux faire ça aussi:

          print(max(t(i) for i in range(100)))



          • Partager sur Facebook
          • Partager sur Twitter

          Problème 'int' not iterable

          × 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