Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un programme qui affiche un triangle

Sujet résolu
    14 septembre 2020 à 14:51:29

    Bonjour 

    Je veux écrire un programme un programme qui lit en entrée une valeur naturelle n et qui affiche à l’écran un triangle supérieur droit formé de X. Le résultat attendu est celui ci avec n = 6 par exemple (angle droit du triangle à droite):

    XXXXXX
     XXXXX
      XXXX
       XXX
        XX
         X

    Mais quand j'utilise le code ci dessous:

    n = int(input())
    for i in range(0, n):
    print(n*'X')
    n = n - 1

    J'obtiens le résultat ci-dessous (angle droit du triangle à gauche):

    XXXXXX

    XXXXX

    XXXX

    XXX

    XX

    X

    Comment faire pour avoir la même orientation (angle droit du triangle à droite)?

    Merci.

    -
    Edité par SeydouWorou 14 septembre 2020 à 15:00:01

    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2020 à 16:55:46

      J'ai essayé de mettre des espaces comme ci-dessous, mais je ne parviens pas à avoir le résultat souhaité. Par exemple avec ce code:

      n = int(input())
      for i in range(0, n):
      print(n*" ", n*'X')
      n = n - 1

      j'obtiens ceci:

        XXXXXX

            XXXXX

           XXXX

          XXX

         XX

        X

      Pouvez-vous m'indiquer une autre option? 

      • Partager sur Facebook
      • Partager sur Twitter
        14 septembre 2020 à 17:14:31

        Bonjour,

        n = int(input())
        multx= n
        for i in range(0, n):
            multx = multx-1
            print(i*" "+'X'*multx)
            



        • Partager sur Facebook
        • Partager sur Twitter
        • J'aime les bananes, le python, le gnu, le pingouin.
          • Vive le libre !
          14 septembre 2020 à 17:18:21

          @seydou Faut pas en mettre le même nombre que pour les x...
          • Partager sur Facebook
          • Partager sur Twitter
            14 septembre 2020 à 18:16:18

            Fabien Merci. Le code que vous avez proposé marche bien.
            • Partager sur Facebook
            • Partager sur Twitter
              14 septembre 2020 à 18:40:38

              pourquoi utiliser une variable intermédiaire ?

              n=int(input())
              for i in range(0,n):
                  print(i*' '+(n-i)*'x')



              -
              Edité par umfred 15 septembre 2020 à 11:16:33

              • Partager sur Facebook
              • Partager sur Twitter
                14 septembre 2020 à 18:49:53

                +1

                • Partager sur Facebook
                • Partager sur Twitter
                • J'aime les bananes, le python, le gnu, le pingouin.
                  • Vive le libre !
                  15 septembre 2020 à 6:40:44

                  @umfred:
                  'oin' est un nouveau mot clé ... ?
                  vaut mieux concaténer dans le print:
                      print(' '*i+'X'*(n-i))
                  Ici, on ne décale que d'un caractère, mais si le dessin était plus complexe, on aurait des effets de bord indésirables.
                  On peut toujours mettre sep='' mais j'aime mieux concaténer.
                  • Partager sur Facebook
                  • Partager sur Twitter

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

                    15 septembre 2020 à 11:16:15

                    PierrotLeFou a écrit:

                    @umfred:
                    'oin' est un nouveau mot clé ... ?
                    vaut mieux concaténer dans le print:
                        print(' '*i+'X'*(n-i))
                    Ici, on ne décale que d'un caractère, mais si le dessin était plus complexe, on aurait des effets de bord indésirables.
                    On peut toujours mettre sep='' mais j'aime mieux concaténer.
                    un coup de mon clavier qui rajoutes des lettres aléatoirement :D (je corrige)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 septembre 2020 à 15:30:26

                      Bonjour,

                      Ci-joint le code simple pour dessiner un triangle supérieur - Bon courage

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 septembre 2020 à 15:31:33

                        JamAlaoui a écrit:

                        Bonjour,

                        Ci-joint le code simple pour dessiner un triangle supérieur - Bon courage


                        le copier/coller n'est pas passé
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 septembre 2020 à 15:32:53 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                            16 septembre 2020 à 15:45:50

                            Le premier while ne sert à rien
                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 septembre 2020 à 15:45:57

                              JamAlaoui a écrit:

                              La capture d'écran n' a pas marché. voilà le code

                              #Lejam - sept. 2020 - Triangle supérieur
                              ligne = int(input())
                              i = 0
                              j = 0
                              while i <=ligne:
                                  while j < ligne :
                                      print( " " * j+ "X"*(ligne-j)  , end="")
                                      print()
                                      j = j + 1
                                  i = i + 1

                              A quoi sert le i et sa boucle ? à la limite si on remettait j à 0 avant sa boucle, on répéterai la forme (ligne) fois.

                              Le end="" dans le 1er print est superflu puisqu'il impose le print() suivant pour passer à la ligne, ce que fait par défaut la fonction print.

                              Et la boucle while j<ligne .... j=j+1 est équivalent à une boucle for i in range(ligne-1) 

                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 septembre 2020 à 16:52:49

                                Bonjour,

                                Plus court en jouant sur le formatage dans print:

                                # -*- coding:Latin-1 -*-
                                
                                for k in range(6):
                                	print("{:>6s}".format('x'*(6-k)))
                                
                                input ('\nPresser Entrée ...')
                                

                                -
                                Edité par Phil_1857 16 septembre 2020 à 16:55:36

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  16 septembre 2020 à 17:39:46

                                  Phil_1857 a écrit:

                                  Bonjour,

                                  Plus court en jouant sur le formatage dans print:

                                  # -*- coding:Latin-1 -*-
                                  
                                  for k in range(6):
                                  	print("{:>6s}".format('x'*(6-k)))
                                  
                                  input ('\nPresser Entrée ...')
                                  

                                  -
                                  Edité par Phil_1857 il y a 25 minutes


                                  Comme la  valeur peut valoir autre chose que 6 (à l'origine cette valeur est demandée à l'utilisateur), il faudrait plutôt faire:

                                  n=int(input())
                                  for k in range(n):
                                      print("{:>" + str(n) + "s}".format('X'*(n-k)))
                                  
                                  #autre solution
                                  for k in range(n):
                                      print(('X'*(n-k)).rjust(n))
                                  



                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 septembre 2020 à 11:44:03

                                    Voila,

                                    Mais c'est quand même plus court et plus concis avec les format ...

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Un programme qui affiche un triangle

                                    × 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