Partage
  • Partager sur Facebook
  • Partager sur Twitter

je suis débutante, j'ai besoin de coup de main et

de conseille s'il vous plait :D

    17 novembre 2014 à 20:46:24

    Bonsoir :D

    Quelqu'un veut bien m'aider s'il vous plait , je veux écrire un programme qui affiche la de multiplication carrée jusqu'à n.

    je souhaite qu'il ressemble à sa pour genre n=3

    1 2 3

    2 4 6

    3 6 9

    voilà ou j'en suis :/ (pas grand chose)

    def TableMulti(n):

         for i in range (1,n+1):

         tab = (i*ii for ii in range (1,n+1))

    merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2014 à 20:53:36

      J'y ai déjà répondu sur ton post précédent, donc je ne vois pas trop l'utilité de reposter...? (sauf si c'est pour la mise en page bien sur :p)
      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2014 à 20:58:47

        moque toi :p
        c'est parce que je pense n'avoir aucune réponse, vu que le post daté de 2007 :D
        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2014 à 21:08:29

          L'ordre des sujets est en fonction de la date du dernier post, ton sujet était donc le premier, tu n'avais pas à t'en faire ;)
          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2014 à 21:10:52

            Salut nbel,

            Dans ta demande, tu souhaite avoir la "multiplication carrée". Pourtant ce que tu affiche comme exemple c'est simplement les tables de multiplication: 1 2 3 c'est la table de 1, 2 4 6 c'est la table de 2 et 3 6 9 c'est la table de 3.

            Ma question est donc: est-ce que tu veux afficher les tables de multiplication, ou t'es-tu trompée? Car je ne vois pas le rapport entre ce que tu affiche et ce que tu appelle "multiplication carrée"

            • Partager sur Facebook
            • Partager sur Twitter
            Précepte: Le mieux est l'ennemi du bien
              17 novembre 2014 à 21:18:36

              bonsoir :)

              c'était simplement un exemple
              et oui je veux afficher les tables de multiplications mais en forme de carré :D
              je n'arrive pas trop à expliquer . 

              • Partager sur Facebook
              • Partager sur Twitter
                17 novembre 2014 à 21:29:41

                Ok je crois avoir compris. Si par exemple on choisis n=5, tu veux prendre les 5 premières tables de multiplication, et dans chacune t'arrêter à la 5ème valeur. Est-ce que c'est ça?
                • Partager sur Facebook
                • Partager sur Twitter
                Précepte: Le mieux est l'ennemi du bien
                  17 novembre 2014 à 21:36:52

                  te casse pas la tête olygrim lol

                  Derzal m'a déjà aider :D

                  merciiii 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 novembre 2014 à 21:40:03

                    Ok ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Précepte: Le mieux est l'ennemi du bien
                      17 novembre 2014 à 21:48:15

                      Néanmoins si tu y tiens absolument j'ai bidouillé un truc: (c'est franchement moche^^)

                      def multiplie(n):
                          for i in range(1, n+1):
                              L = []
                              for j in range(1, n+1):
                                  L.append(i*j)
                              for elt in L:
                                  print(elt, ' ', end='')
                              print('\n')


                      Et si on veut qu'il y ait pile un espace entre chaque, on met une chaine vie à la place du deuxième paramètre de print, ou on modifie le sep: sep=''

                      -
                      Edité par Derzal 17 novembre 2014 à 21:50:14

                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 novembre 2014 à 21:58:03

                        Si on veux on peux remplacer les lignes 6 et 7 par [print(elt, '', end='') for elt in L] pour plus de "propreté" (ça reste sale), mais je ne vois pas trop comment faire ça bien pour l'instant :/
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          17 novembre 2014 à 22:00:47

                          Tiens, je viens de penser à un truc, et si on créait un thread sur l'obfuscation et les one-liners ? Il me semble que nohar en avait créé un déjà mais impossible de mettre la main dessus :(.

                          On peut faire un truc fun aussi:

                          def multipli(x=10, y=10):
                              for f in range(1, y+1):
                                  print(('{:<4}'*y).format(*[f*i for i in range(1, x+1)]))

                          Non testé mais ça marche en théorie ;).

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 novembre 2014 à 22:01:49

                            du moment que sa marche :p
                            tu m'as bien aider, arrête de te casser la tête lol
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 novembre 2014 à 22:03:25

                              Tu peux pousser encore plus loin et le faire en one liner :p

                              Cadeaux! (ils sont dans mes favoris depuis pas mal de temps^^)

                              http://openclassrooms.com/forum/sujet/obfuscation-de-code-et-one-liners-32955

                              Bonus: http://openclassrooms.com/forum/sujet/tp-notions-de-programmation-fonctionnelle-66411

                              Edit: @AZ: par contre en échange je veux bien un tuto clair sur les paramètres de format() (les trucs entre les accolades)

                              -
                              Edité par Derzal 17 novembre 2014 à 22:06:27

                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 novembre 2014 à 22:16:43

                                Et au fait AZ, ton programme ne marche pas ;)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 novembre 2014 à 22:22:39

                                  Bon puisque je l'ai fait, je balance ma réponse (qui se rapproche pas mal de celle de AZ). Ça sera ma dernière pour la soirée:

                                  def f(n):
                                      for i in range(1, n+1):
                                          ma_liste = [i*j for j in range(1, n+1)]
                                          print(*ma_liste)

                                  Par contre question affichage on peut l'améliorer. Derzal matte la dernière ligne. J'ai appris cette écriture sur le forum il y a pas longtemps et je l'a trouvé trop pratique :lol:.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Précepte: Le mieux est l'ennemi du bien
                                  Anonyme
                                    17 novembre 2014 à 22:39:32

                                    f = lambda n: print('\n'.join( ' '.join( str(a*b).center(3) for b in range(1, n+1) ) for a in range(1, n+1) )) :p

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 novembre 2014 à 22:43:40

                                      psyco tu me fait toujours découvrir de nouvelles méthodes. Cette fois-ci, c'est la méthode center() ^^
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Précepte: Le mieux est l'ennemi du bien
                                      Anonyme
                                        18 novembre 2014 à 7:16:48

                                        @Derzal: Tiens, c'est bizarre, je viens de le tester et il fonctionne parfaitement. o_O

                                        @Olygrim: Je connassait pas non plus `center`! Je sais pas s'il y a une différence entre 'banane'.center(20) et  '{:^20}'.format('banane'). Dans le même genre tu as rshift et lshift qui décalent respectivement vers la droite et vers la gauche.

                                        Sinon bien joué psyco :lol:.

                                        -
                                        Edité par Anonyme 18 novembre 2014 à 7:19:52

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 novembre 2014 à 7:31:39

                                          Merci pour les méthodes AZ, je connaissais pas non plus.

                                          Je viens de regarder ta technique et elle est très sympa :). Je me demandais justement comment multiplier les endroits d'insertion (les accolades) dans une chaîne. En y réfléchissant, ta technique (la concaténation) est très logique, bien joué.

                                          Est-ce que ça équivaut à la méthode center()? Je pense que oui, faudra tester. center() me paraît plus souple, surtout combiné avec tes 2 méthodes rshift() et lshift(). Mais encore une fois, c'est à peu près équivalent je pense :lol:

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Précepte: Le mieux est l'ennemi du bien
                                          Anonyme
                                            18 novembre 2014 à 7:41:10

                                            Si u veux y'a toute une section de la doc consacrée à ça: https://docs.python.org/3/library/string.html#formatspec
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 novembre 2014 à 7:46:12

                                              Oui je connais. Mais c'est tellement riche que c'est dur de tout assimilé. Ça viendra avec le temps ;)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Précepte: Le mieux est l'ennemi du bien
                                                18 novembre 2014 à 10:57:43

                                                AlphaZeta a écrit:

                                                On peut faire un truc fun aussi:

                                                def multipli(x=10, y=10):
                                                    for f in range(1, y+1):
                                                        print(('{:<4}'*y).format(*[f*i for i in range(1, x+1)]))

                                                Converti en one-liner ça donne :

                                                f = lambda n: map(lambda l: print((n*'{:<4} ').format(*l)), [[i*j for i in range(1, n+1)] for j in range(1, n+1)])

                                                C’est tout aussi illisible que le code de psycopy cela dit.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                per aspera ad astra – comp.lang.c FAQexplication pointeur
                                                Anonyme
                                                  18 novembre 2014 à 12:37:09

                                                  talpa a écrit:

                                                  C’est tout aussi illisible que le code de psycopy cela dit.

                                                  Non, c'est pire ! :D

                                                  Olygrim a écrit:

                                                  psyco tu me fait toujours découvrir de nouvelles méthodes. Cette fois-ci, c'est la méthode center() ^^

                                                  Tu trouveras tout l'histoire de la vie dans la bible. En ce jour de grâce, la lecture de ce verset sera ta rédemption, mécréant !

                                                  AlphaZeta a écrit:

                                                  @Olygrim: Je connassait pas non plus `center`! Je sais pas s'il y a une différence entre 'banane'.center(20) et  '{:^20}'.format('banane'). Dans le même genre tu as rshift et lshift qui décalent respectivement vers la droite et vers la gauche.

                                                  C'est ljust et rjust. ;)

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    18 novembre 2014 à 12:51:02

                                                    C'est ljust et rjust. ;)

                                                    Ah oui désolé, j'suis bête >.<

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    je suis débutante, j'ai besoin de coup de main et

                                                    × 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