Partage
  • Partager sur Facebook
  • Partager sur Twitter

Variable dynamique

Sujet résolu
    15 janvier 2021 à 16:27:42

    Bonjour, j'aimerais créér un nom de variable par rapport à une chaîne de caractère et une variable (donc les incrémenter).

    de façon à ce que dans une boucle, à chaque fois cela créé une variable différentes. ex: bdd_user_1, bdd_user_2, bdd_user_3 donc le numéro serait oar exemple la variable i.

    Est-ce possible?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2021 à 16:41:46

      utiliser une liste dont l'indice contiendra les données:

      bdd_user=[]
      for i in range(10):
          r=["val " +str(i), "test " + str(i)
          bdd_user.append(r)
      
      print(bdd_user)



      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2021 à 19:15:31

        Euh donc comment dois-je faire car c'est pour ce code:
        def tab_bdd():
            x = len(bdd)
            i = -1
            print(""" 
                <head>
                    <style>
                        table
                        {
                            border-collapse: collapse;
                        }
                        td, th
                        {
                            border: 1px solid black;
                        }
                    </style>
                </head>
                <body>
                    <table>
                    <tr>
                        <th>ID</th>
                        <th>USER</th>
                        <th>LEVEL</th>
                    </tr>
                """)
            while i < x:
                print(bdd[i])
                i += 1
                bdd = bdd[1]
        
                print(f"""<tr>
                        <th>{bdd[i]}</th>
                        <th>{i}</th>
                        <th>{i}</th>
                    </tr>
                """)

        je veux que à la ligne bdd = bdd[1] je veux que il y ai le nom bdd mais avec la valeur de 1 après donc bdd1, bdd2 ... 


        sinon, j'ai trouvé que l'on pouvait faire avec:

        bdd = bdd[1]
        exec(bdd+'='+str(i)) 

        Mais le problème est que je ne peut que ajouter si la liste contient des strings mais moi ce sont des listes dans des listes…

        Et ça ne fonctionne pas avec 2 listes additionnée

        Merci

        -
        Edité par MaxMlr 15 janvier 2021 à 20:23:53

        • Partager sur Facebook
        • Partager sur Twitter
          15 janvier 2021 à 20:55:34

          MaxMlr a écrit:

          Mais le problème est que je ne peut que ajouter si la liste contient des strings mais moi ce sont des listes dans des listes…

          Quand on utilise des listes on a justement pas besoin de créer des variables de cette manière, on peut accéder directement aux éléments des listes et des sous-listes.

          • Partager sur Facebook
          • Partager sur Twitter

          Blond, bouclé, toujours le sourire aux lèvres...

            15 janvier 2021 à 21:59:59

            Bon je vous explique: j'ai une base de données avec un ID un user et un Level.

            Elle est gérée de façon à ce que chaque ligne de la bdd soit une autre liste.

            donc je veux que dans la boucle, à chaque fois il me prenne l'id, l'user et le level pour creer un tableau moi-même.

            C'est pour cela que je fais de cette manière.

            Merci

            • Partager sur Facebook
            • Partager sur Twitter
              15 janvier 2021 à 22:34:51

              Je crois que je commence à comprendre, c'est à cause des fstrings que tu veux créer des variables dynamiques ? Tu peux quand même utiliser le format liste[x] dans les fstrings.

              L'autre problème c'est que tu écrase ta variable bdd ligne 28.

              Pour illustrer le problème :

              bdd = [
                     [1, "test1"],
                     [2, "test2"],
                     [3, "test3"],
                     [4, "test4"]
                    ]
              
              bdd = bdd[1]
              print(bdd)
              # affiche : [2, "test2"]
              

              Utilise plutôt un autre nom de variable comme "ligne" par exemple, pour éviter d'effacer la variable bdd.

              Comme ça tu pourras écrire :

              while i < bdd_size :
                  ligne = bdd[i]
                  print(f"""<tr>ligne[0]</tr>
              <tr>ligne[1]</tr>""")
                  i = i + 1



              -
              Edité par LoupSolitaire 15 janvier 2021 à 22:38:13

              • Partager sur Facebook
              • Partager sur Twitter

              Blond, bouclé, toujours le sourire aux lèvres...

                16 janvier 2021 à 13:38:40

                Oui justement et je veux que la variable ligne prenne après le numéro de la variable i dans la boucle !
                • Partager sur Facebook
                • Partager sur Twitter
                  16 janvier 2021 à 15:45:58

                  Oui mais en fait non, on fait pas ça en pratique quand on programme.

                  Les listes sont prévues pour ce cas de figure justement.

                  -
                  Edité par LoupSolitaire 16 janvier 2021 à 15:46:45

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Blond, bouclé, toujours le sourire aux lèvres...

                    16 janvier 2021 à 19:30:36

                    Certe, mais si la variable est la même cela ne fonctionnera pas ?!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 janvier 2021 à 21:20:28

                      La variable porte le même nom mais à chaque tour de boucle son contenu est différent. Comme la variable i qui est incrémentée de 1 à chaque tour de boucle.

                      Essaie en t'inspirant du bout de code que j'ai posté et tu vas voir que ça fonctionne très bien.

                      -
                      Edité par LoupSolitaire 16 janvier 2021 à 21:21:29

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Blond, bouclé, toujours le sourire aux lèvres...

                        18 janvier 2021 à 16:14:07

                        tu peux aussi passer directement par bdd[i][0] et bdd[i][1] pour accéder aux éléments
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 janvier 2021 à 8:25:59

                          Et tu peux utiliser un for i in range(x+1) plutôt qu'un while i &lt; x.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 janvier 2021 à 20:20:18

                            C'est bon ducoup j'ai réussi merci à tous !
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Variable dynamique

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown