Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pouvoir retourner une valeur directement

Sujet résolu
    23 novembre 2019 à 2:10:00

    Désolé d'avance de la faible pertinence du titre, je n'avais pas vraiment d'idée de la façon dont je devais décrire ma question, je vous laisse déjà jeter un coup d’œil au code, il demande simplement une valeur à l'utilisateur et va créer un triangle (je vous laisse tester si ça vous tente, mais le triangle reste très basique, on doit pouvoir faire 10 fois mieux, c'est le mieux que je pouvais au vu de mes connaissance).

    Bref ma question concerne la fin, je voudrais demander à l'utilisateur soit d'écrire "fermez" et alors le programme se ferme (ça sa marche correctement) mais que si l'utilisateur veut refaire un triangle il puisse directement donner une nouvelle valeur (en gros sois il ferme le programme avec "fermez" soit il donne une nouvelle valeur). Le problème est que la valeur donnée n'est pas prise en compte et n'est pas modifier, le programme fait un autre triangle mais au même dimension qu'avant

    Désolé de vous déranger pour si peu, l'utilité est moindre mais ça m'amuser de faire ce programme et de le rendre le plus complet possible.

    Merci d'avance pour votre aide !

    Code:

    hauteur = 0
    fin = "non"
    while fin != "fermez":
            while hauteur <2 or hauteur >118:
                    print("Quel hauteur devra faire votre triangle?:", end = " ")
                    hauteur = int(input())
                    if hauteur <2 or hauteur >118:
                            print("la hauteur minimum est 2 et la hauteur maximale est 118")
            def triangle(hauteur):
                    espace = 0
                    for x in range(hauteur-1):
                            for loop in range(hauteur-x-1):
                                    print(" ", end = "")
                            print("/", end = "")
                            for loop in range(espace):
                                    print(" ",end = "")
                            espace += 2
                            print(chr(92))
                    print("/", end = "")
                    for loop in range(hauteur+(hauteur-2)):
                            print("_", end = "")
                    print(chr(92))
            triangle(hauteur)
            print("Pour arréter le programe écrivez 'fermez', sinon entrez une nouvelle valeur")
            fin = input()
            test = type(fin)
            if test == int:
                    hauteur = fin
    
    

    • Partager sur Facebook
    • Partager sur Twitter
      23 novembre 2019 à 2:24:41

      Dalethvien a écrit:

      Désolé de vous déranger pour si peu, l'utilité est moindre mais ça m'amuser de faire ce programme et de le rendre le plus complet possible.

      Non mais c'est bon, c'est un exercice, c'est bien pour apprendre, et c'est moins fatiguant de s'occuper de problèmes simples :ninja:

      Pour ton code, déjà le premier truc, c'est qu'il faut sauter des lignes. Presque 30 lignes de code et pas un seul saut de ligne, c'est dur à lire.

      Ensuite, la fonction en plein milieu de la boucle, c'est vraiment pas possible, les fonctions il faut les définir au début du fichier, avant de commencer le code principal, sinon ça n'a aucun intérêt. Et l'indentation, c'est 4 espaces, 8 c'est beaucoup trop.

      Exemple :

      def triangle(hauteur):
          espace = 0
          for x in range(hauteur-1):
              for loop in range(hauteur-x-1):
                  print(" ", end = "")
              print("/", end = "")
              for loop in range(espace):
                  print(" ", end = "")
              espace += 2
              print(chr(92))
      
          print("/", end = "")
          for loop in range(hauteur+(hauteur-2)):
              print("_", end = "")
          print(chr(92))
      
      
      hauteur = 0
      fin = "non"
      
      while fin != "fermez":
          while hauteur < 2 or hauteur > 118:
              print("Quel hauteur devra faire votre triangle?:", end = " ")
              hauteur = int(input())
              if hauteur < 2 or hauteur > 118:
                  print("la hauteur minimum est 2 et la hauteur maximale est 118")
      
          triangle(hauteur)
          print("Pour arréter le programe écrivez 'fermez', sinon entrez une nouvelle valeur")
          fin = input()
          test = type(fin)
          if test == int:
              hauteur = fin


      Pour ton bug, c'est juste le if à la toute fin, ta condition n'est jamais vraie.

      -
      Edité par LoupSolitaire 23 novembre 2019 à 2:30:48

      • Partager sur Facebook
      • Partager sur Twitter

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

        23 novembre 2019 à 9:07:55

        Disons que je ne vois pas trop comment tester la condition à la fin ^^

        Désolé pour la présentation, j'ai fait ça à .... ha oui 1h du math ^^' autant dire un peu à l'arrache sans penser à la présentation :s

        Merci beaucoup pour ta réponse LoupSolitaire !

        -
        Edité par Dalethvien 23 novembre 2019 à 9:09:17

        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2019 à 17:12:45

          Dalethvien a écrit:

          Disons que je ne vois pas trop comment tester la condition à la fin ^^

          input() renvoie une chaine de caractères, donc ce ne sera jamais un int.

          La solution que je vois, c'est de tester si la chaine est composée de chiffres, en plus il y a une méthode pour ça en Python avec .isnumeric()

          Exemple dans une console :

          >>> "abcd".isnumeric()
          False
          >>> "123".isnumeric()
          True
          

          Avec ça tu devrais pouvoir faire quelque chose je pense.

          -
          Edité par LoupSolitaire 23 novembre 2019 à 17:13:09

          • Partager sur Facebook
          • Partager sur Twitter

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

            23 novembre 2019 à 18:09:46

            Merci beaucoup, je ne connaissais pas ce test ^^ ça a bien résolu mon problème. Merci beaucoup!
            • Partager sur Facebook
            • Partager sur Twitter

            Pouvoir retourner une valeur directement

            × 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