Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ne pas avoir d'affichage en utilisant inpu()

Sujet résolu
    23 avril 2019 à 10:19:34

    Salut, 

    J'ai rapidement cherché sur internet mais je n'ai pas trouvé de maniere simple de ne pas obtenir un print de ce que j'ai rentré dans ma fonction input().

    Par exemple

    mess = input()

    va m'afficher la variable mess, or je voudrai juste que ca que je rentre dans le input soit sauvegardé dans la variable mess sans aucun affichage

    • Partager sur Facebook
    • Partager sur Twitter
      23 avril 2019 à 10:47:00

      Pas compris, il n'y a pas de print dans ton code.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        23 avril 2019 à 10:52:47

        Tu parle de l'écho des caractères quand tu appuis sur ton clavier ? Si c'est ça alors ça dépend de la manière dont est défini le flux d'entrée stdin. Si ce flux est standard, alors tu peux utiliser getpass.

        • Partager sur Facebook
        • Partager sur Twitter
          23 avril 2019 à 11:05:43

          Il n'y a pas de print, mais quand je vais taper quelque chose dans la barre qui s'affiche grace au input, ce quelque chose va s'afficher dans la console, je sais pas si je me fais bien comprendre ..

          IdiotBete, j'imagine que ca doit etre ca, comment je gere les flux d'entrée ?

          • Partager sur Facebook
          • Partager sur Twitter
            23 avril 2019 à 11:18:52

            Comme a dit IB utilise getpass:

            import getpass
            
            mess = getpass.getpass("Entrez qqchose : ")



            -
            Edité par thelinekioubeur 23 avril 2019 à 11:19:19

            • Partager sur Facebook
            • Partager sur Twitter
              23 avril 2019 à 11:59:39

              Oui, mais au final ya quand meme quelque chose qui s'affiche, c'est masqué par des points, mais il y a quand meme ces points :

              mess = getpass.getpass()
              >>>> ··········

              Or dans mon code il y a beaucoup d'entrées input, surtout que je n'en ai pas besoin, j'aimerai que rien n'apparaisse

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                23 avril 2019 à 12:55:36

                Dans quoi est-ce que tu exécutes ton programme Python ?
                As-tu des alertes (Warning) qui s'affichent ?

                -
                Edité par Anonyme 23 avril 2019 à 12:55:51

                • Partager sur Facebook
                • Partager sur Twitter
                  23 avril 2019 à 14:11:40

                  Tu n'a répondu qu'à 50% des questions ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 avril 2019 à 14:18:47

                    Oups pardon oui, excuse moi, je suis sur un notebook, plus particulierement un notebook de google collab
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      23 avril 2019 à 14:55:31

                      Alors tu n'as pas le contrôle sur les flux d'entrée et de sorties.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 avril 2019 à 14:58:05

                        Apres je peux tres bien transferer sur un ide, je travaille sur spyder en général
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          23 avril 2019 à 15:14:14

                          Ton programme devra tourner sur quoi au final ?
                          D'ailleurs à quoi il sert ce programme ?
                          Et pourquoi tu veux cacher la saisie de l'utilisateur ?

                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 avril 2019 à 15:16:59

                            Sinon une solution à la con c'est de mettre la couleur de texte du terminal en hidden, mais je ne sais le faire que pour linux:

                            mess = input("écrire qqchose : \033[8m")
                            print("\033[0m")
                            print(mess)
                            

                            C'est peut être possible sur ton système... Peut être voir du côté de la lib colorama.

                            Mais bon c'est vraiment bancal, et on voit quand même le curseur se déplacer.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 avril 2019 à 15:23:04

                              Mon programme n'est pa destiné a tourner sur differentes plateforme, c'est juste un projet a rendre pour la fin d'année, le sujet est libre. 

                              En gros j'ai creer une classe Banque, une classe Client et deux sous Classes ClientPauvre et ClientRiche

                              Dans la classe Banque ya une instance creer compte, par exemple, qui demande beaucoup d'infos a l'utilisateurs, ca fait beaucoup de choses qui s'affichent à l'écran, si en plus les infos saisit par l'utilisateur s'affiche aussi c'est surchargé a mon gout.

                              je peux vous poster le code si vous voulez. 

                              Je vais jeter un oeil sur la bibli colorama, ca peut etre drole de tricher comme ca haha 

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                23 avril 2019 à 15:24:45

                                @thelinekioubeur, il s'agit en faite d'un document en ligne sur le drive de google, ce n'est pas un terminal, il n'y a aucun contrôle du système et ce n'est d'ailleurs pas le but de cet outils.

                                Pour information, la fonction input ne sert que très rarement en réalité, et encore moins dans un notebook. Je pense que le problème de l'affichage ou non de la saisie ne devrait même pas se poser.

                                Edit: Poste le code s'il te plais, qu'on arrête de tourner en rond. Et au final ton code sera bien exécuté quelque part, en l’occurrence si tu utilise la fonction input c'est dans un terminal.

                                -
                                Edité par Anonyme 23 avril 2019 à 15:27:39

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 avril 2019 à 15:33:53

                                  le code :

                                  class Client:
                                    
                                    def __init__(self, nom, annee_pbac, age, sexe, revenus, secteur, mdp):
                                      self.nom = nom
                                      self.age = age
                                      self.sexe = sexe
                                      self.revenus = revenus
                                      self.secteur = secteur
                                      self.mdp = mdp
                                      self.annee_pbac = annee_pbac
                                      
                                      self.argent = 0
                                      self.historique = [self.argent]
                                    
                                    def attribute(self):
                                      return [self.age, self.secteur, self.annee_pbac, self.sexe, self.argent]
                                  class ClientRiche(Client):
                                    
                                    def __init__(self,nom, annee_pbac, age, sexe, revenus, secteur, mdp):
                                      Client.__init__(self,nom,annee_pbac, age, sexe, revenus, secteur, mdp)
                                      self.decouvert = -500
                                      self.emprunt = 5E4
                                  
                                  class ClientPauvre(Client):
                                    
                                    def __init__(self,nom, annee_pbac, age, sexe, revenus, secteur, mdp):
                                      Client.__init__(self,nom, annee_pbac, age, sexe, revenus, secteur, mdp)
                                      self.decouvert = -100
                                      self.emprunt = 0
                                  class Banque:
                                    def __init__(self, nom, liste_client):
                                      self.nom = nom
                                      self.liste_client = liste_client
                                      
                                    def creer_nouveau_compte(self):
                                      print('-'*40)
                                      print("Vous allez devoir remplir les informations necessaires à l'ouverture de votre compte.")
                                      print("Veuillez d'abord renseigner votre nom.")
                                      nom = str(input())
                                      print("Veuillez maintenant renseigner votre age.")
                                      age = int(input())
                                      while type(age) != int:
                                        print("Le format de votre age est incorrect, il doit etre un nombre entier, veuillez recommencer :")
                                        age = int(input())
                                      
                                      print("Veuillez maintenant renseigner votre sexe, (female/male)")
                                      sexe = str(input())
                                      while not (sexe != 'male' or sexe != 'female'):
                                        print("Le format renseigné est incorrect, veuillez recommencer : (female/male)")
                                        sexe = str(input())
                                        print(sexe)
                                      
                                      print("veuillez maintenant renseigner sur le nombre d'année d'étude post brevet")
                                      annee_pbac = int(input())
                                      while type(annee_pbac) != int:
                                        print("Le montant renseigné est incorrect, veuillez recommencer (nombre entier) :")
                                        annee_pbac = int(input())
                                        
                                      print("Veuillez maintenant renseigner vos revenus annuels en euros.")
                                      revenus = int(input())
                                      while type(revenus) != int:
                                        print("Le montant renseigné est incorrect, veuillez recommencer (nombre entier) :")
                                        revenus = int(input())
                                        
                                      print("Veuillez maintenant renseigner le secteur dans lequel vous travaillez.")
                                      print("Choix : State-gov, Self-emp-not-inc, Private, Federal-gov, Local-gov, Self-emp-inc, Without-pay, Never-worked")
                                      secteur = str(input())
                                      while secteur not in ['State-gov', 'Self-emp-not-inc', 'Private', 'Federal-gov','Local-gov', 'Self-emp-inc', 'Without-pay','Never-worked']:
                                        print("Le format renseigné est incorrect, veuillez recommencer :")
                                        secteur = str(input())
                                        
                                      liste = "a z e r t y u i o p q s d f g h j k l m w x c v  b n 1 2 3 4 5 6 7 8 9"
                                      liste = liste.split()
                                      choix = np.random.choice(liste, size = 10).tolist()
                                      mdp =""
                                      for i in choix:
                                        mdp += i
                                      print("Creation de votre compte client terminé, votre mot de passe est le :", mdp)
                                      ##TODO prediction sur les donnees fournies, output = clientriche ou clientpauvre
                                      nouveau_client = Client(nom, annee_pbac, age, sexe, revenus, secteur, mdp)
                                      self.liste_client.append(nouveau_client)
                                      Banque.menu(self)
                                      
                                    def connexion(self):
                                      liste_nom = [i.nom for i in self.liste_client]
                                      liste_mdp = [i.mdp for i in self.liste_client]
                                      cpt = 1
                                      print("Pour vous connecter, entrez votre nom, puis votre mot de passe :")
                                      nom = str(input())
                                      while nom not in liste_nom:
                                        print("Nom incorrect, veuillez reessayer.")
                                        print("Si vous n'avez pas de compte, tapez #")
                                        nom = str(input())
                                        if nom == '#':
                                          Banque.creer_nouveau_compte(self)
                                      mdp = str(input())
                                      ind = liste_nom.index(nom)
                                      while mdp != liste_mdp[ind]:
                                        print("Le mot de passe est incorrect, reessayez.")
                                        print("Nombre de tentative :", cpt, "/3")
                                        cpt += 1
                                        if cpt == 4:
                                          print("Deconnexion")
                                          Banque.menu(self)
                                          return None
                                        print("Si vous l'avez oublié, tapez # pour retourner au menu.")
                                        mdp = str(input())
                                        if mdp == "#":
                                          Banque.menu(self)
                                      Banque.menu_perso(self, self.liste_client[ind])
                                      
                                      
                                    def quitter(self):
                                      print('-'*40)
                                      print("Merci et a bientot au", self.nom)
                                    
                                    def menu_perso(self, Client):
                                      print('-'*40)
                                      print("Bonjour Monsieur", Client.nom)
                                      print("Bienvenue dans votre espace client.")
                                      print("Que voulez vous faire ?")
                                      print("1 : Demander un emprunt.")
                                      print("2 : Effectuer un retrait.")
                                      print("3 : Effectuer un depot.")
                                      print("4 : Afficher les caracteristiques de mon compte.")
                                      print("5 : Changer de mot de passe.")
                                      print("6 : Se deconnecter.")
                                      choix = int(input())
                                      while choix not in range(1,7):
                                        print("Vous devez choisir entre les six propositions.")
                                        choix = int(input())
                                      if choix == 1:
                                        Banque.emprunt(self, Client)
                                      elif choix == 2:
                                        Banque.retrait(self, Client)
                                      elif choix == 3:
                                        Banque.depot(self, Client)
                                      elif choix == 4:
                                        Banque.characteristiques(self, Client)
                                      elif choix == 5:
                                        Banque.changer_mdp(self, Client)
                                      elif choix == 6:
                                        Banque.menu(self)
                                        
                                    def retrait(self, Client):
                                      print('-'*40)
                                      print("Combien voulez vous retirer ?")
                                      print("Vous disposez de", Client.argent, "€")
                                      montant = int(input())
                                      m = Client.argent
                                      while (m - montant) < Client.decouvert:
                                        print("Depassement du decouvert autorisé.")
                                        print("Veuillez demander moins, ou taper # pour revenir au menu")
                                        montant = int(input())
                                        if montant == '#':
                                          Banque.menu_perso(self,Client)
                                      print("Vous avez retiré", montant, "€")
                                      Client.argent -= montant
                                      Client.historique.append(Client.argent)
                                      Banque.menu_perso(self,Client)
                                      
                                    def depot(self,Client):
                                      print('-'*40)
                                      print("Combien voulez vous deposer ?")
                                      montant = int(input())
                                      Client.argent += montant
                                      print("Vous avez desormais", Client.argent)
                                      Client.historique.append(Client.argent)
                                      Banque.menu_perso(self,Client)
                                      
                                    def changer_mdp(self, Client):
                                      print('-'*40)
                                      print("Veuillez taper votre mot de passe.")
                                      mdp = str(input())
                                      cpt = 1
                                      while (mdp != Client.mdp):
                                        print("Mot de passe incorrect, veuillez reessayer :")
                                        print("Nombre de tentative :", cpt, "/3")
                                        mdp = str(input())
                                        cpt += 1
                                        if cpt == 4:
                                          print("Deconnexion")
                                          Banque.menu(self)
                                          return None
                                      print("Veuillez taper votre nouveau mot de passe.")
                                      m1 = str(input())
                                      print("Veuillez verifier votre mot de passe.")
                                      m2 = str(input())
                                      while m1 != m2:
                                        print("Les mots de passes sont differents, veuillez recommencer :")
                                        m1 = str(input("1)"))
                                        m2 = str(input("2)"))
                                      Client.mdp = m1
                                      print("Votre mot de passe a été changé avec succès")
                                      Banque.menu_perso(self, Client)
                                      
                                    def characteristiques(self, Client):
                                      print('-'*40)
                                      print("Voici les charactéristiques de votre compte")
                                      print("Nom : ", Client.nom)
                                      print("Mot de passe : ", Client.mdp)  
                                      print("Argent : ", Client.argent)
                                      print("Découvert max :", Client.decouvert)
                                      plt.plot(Client.historique)
                                      plt.plot(Client.historique,'o', color = 'red')
                                      plt.title('Historique du compte :')
                                      plt.show()
                                      Banque.menu_perso(self, Client)
                                      
                                    def emprunt(self, Client):
                                      attribut_client = []
                                      
                                      
                                    def menu(self):
                                      print('-'*40)
                                      print("Bonjour et bienvenue a la banque ", self.nom)
                                      print("Que voulez vous faire ?")
                                      print("1 : Creer un compte.")
                                      print("2 : Se connecter a votre compte client.")
                                      print("3 : Quitter.")
                                      choix = int(input())
                                      while choix not in range(1,4):
                                        print("Vous devez choisir entre les trois propositions.")
                                        choix = int(input())
                                      if choix == 2:
                                        Banque.connexion(self)
                                      elif choix == 1:
                                        Banque.creer_nouveau_compte(self)
                                      elif choix == 3:
                                        Banque.quitter(self)
                                  c = ClientRiche('Denis',6, 20,'female',2E4,'State-gov', '1234')
                                  b = Banque('CreditDenis', [c])
                                  b.menu()
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    23 avril 2019 à 16:33:32

                                    Comme je le pensais, il n'y a pas de raisons valables pour cacher la saisie de l'utilisateur, au contraire même.

                                    Nuire à l'ergonomie pour des raisons esthétique est clairement une mauvaise idée. En plus ce programme s'utilisera en ligne de commande, autant dire que l'esthétique n'est pas la priorité. Mais si tu tiens vraiment à avoir quelque chose d'agréable, en ergonomie et en esthétique, tu devrais regarder la bibliothèque prompt_toolkit.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 avril 2019 à 16:35:22

                                      Okay, merci pour tout, je vais regarder ca, si tu as des conseils sur mon code, je serai ravi de les avoir :)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 avril 2019 à 16:41:46

                                        Je n'ai pas tout lu, mais tu peux remplacer les lignes 43 et 44 par :

                                        liste = list("azertyuiopqsdfghjklmwxcvbn123456789")


                                        EDIT :

                                        je dirais même plus :

                                        import random
                                        mdp = "".join(random.choices("azertyuiopqsdfghjklmwxcvbn123456789", k=10))

                                        Et puis il y a certainement une lib pour faire des génération de mot de passe.

                                        -
                                        Edité par thelinekioubeur 23 avril 2019 à 16:47:27

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          23 avril 2019 à 16:59:08

                                          Okay, merci pour tout, je vais regarder ca, si tu as des conseils sur mon code, je serai ravi de les avoir :)

                                          Je n'ai pas le courage de rentrer dans les détails et les explications. C'est quelque chose qu'un bon tutoriel devrait enseigner, mais en bref :

                                          • La PEP8 définie les conventions de style que tout développeur Python se doit de suivre le plus possible (déroger à quelques règles de temps à autre n'est pas non-plus criminel, mais la respecter est quand-même important).
                                          • Séparer la base (le cœur, alias core) du programme de son interface utilisateur (l'ui, qu'elle soit textuelle ou graphique) est aussi très important dans son organisation pour facilité son développement et son évolution. edit: en fait tu le fais déjà un peu avec l'ui uniquement dans la classe Banque.
                                          • Il y a beaucoup de répétitions dans ton code, utilise des fonctions pour réduire leur nombre (par exemple, une fonction pour la saisie qui se charge de redemander en cas d'erreur).
                                          • Toutes ces chaînes de caractères devraient être dans une structure (liste ou dictionnaire) globale au début du code, et les fonction d'affichage irait piocher ce dont elles ont besoin dedans.

                                          Et sûrement d'autres choses, mais c'est déjà pas mal.

                                          -
                                          Edité par Anonyme 23 avril 2019 à 17:02:19

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Ne pas avoir d'affichage en utilisant inpu()

                                          × 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