Partage
  • Partager sur Facebook
  • Partager sur Twitter

test de binarité d'une chaine

    23 novembre 2021 à 14:54:52

    Bonjour, je viens chercher de l'aide en espérant être au bonne endroit, je suis dans mes première années de "programmation" et je bloque sur cette ennoncé : 1- Ecrire une fonction testBase2(chaîne) qui renvoie True si tous les caractères de la chaîne sont des 0 ou des 1, et qui renvoie False sinon. 2- Ecrire deux instructions assert pour tester votre fonction

    J'éspere des personnes pourront m'aider.

    • Partager sur Facebook
    • Partager sur Twitter
      23 novembre 2021 à 15:09:03

      tu bloques sur quoi exactement ? est-ce que tu as vu les set ? est-ce que tu sais parcourir un tableau ? (une chaine est similaire à un tableau sur certains points)
      • Partager sur Facebook
      • Partager sur Twitter
        23 novembre 2021 à 15:18:49

        Faut revoir le chapitre sur les exceptions
        Un assert pour la longueur (je suppose) et un autre pour chaque caractère.
        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          23 novembre 2021 à 17:45:14

          Tester tous les caractères de la chaîne reçue en paramètre et vérifier qu'ils sont tous égaux à 0 ou 1 se code de différentes façons.

          Une façon "pythonique" sera:

          def testBase2(chaine):
              try:
                 int(chaine, 2)
              except ValueError:
                 return False
              return True

          mais vous devez coder çà avec le Python que vous avez appris... et si vous voulez de l'aide montrer ce que vous avez essayé aidera à comprendre à quoi il ressemble (et se mettre à votre niveau).

          • Partager sur Facebook
          • Partager sur Twitter
            23 novembre 2021 à 20:27:15

            pour l'instant j'ai ce début là :

            def testBase2(chaîne) :

             mot_i = []
             mot_i += chaîne[::1]
             print (mot_i)
             for i in range(len(mot_i)) :
                 if mot_i[i] == '1' or '0' :
                     return True
                 else :
                     return False
            

            assert(testBase2('010011')== True) assert(testBase2('10102')==False)

            je pense que mon erreur est dans le if, enfin c'est même sûr mais je n'arrive pas à trouver comment faire autrement.

            • Partager sur Facebook
            • Partager sur Twitter
              23 novembre 2021 à 20:47:33

              WanXiku a écrit:

              je pense que mon erreur est dans le if, enfin c'est même sûr mais je n'arrive pas à trouver comment faire autrement.


              Vous codez ça comme la traduction du français "caractère egal à 1 ou a 0".

              Ici on fait des maths! Et la conjonction (le ou) de 2 propositions (les tests) ne s'écrit pas comme çà (en math comme en python).

              Puis si on termine la boucle après la première itération (return True/False) on ne testera pas si tous les caractères sont 0 ou 1.

              -
              Edité par mps 23 novembre 2021 à 20:49:15

              • Partager sur Facebook
              • Partager sur Twitter
                24 novembre 2021 à 11:44:27

                ok je confirme que dans l'autre sujet, il y a mélange avec celui-ci
                • Partager sur Facebook
                • Partager sur Twitter

                test de binarité d'une chaine

                × 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