IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Contrôle de Saisie, besoin d'aide [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Alternant
    Inscrit en
    Octobre 2019
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 48
    Points : 66
    Points
    66
    Par défaut Contrôle de Saisie, besoin d'aide
    Bonjour/Bonsoir,

    Je suis actuellement sur un projet personnel afin de m'exercer, j'ai une entry dans laquel on vas saisir par exemple : 15 + 20, mon but étant de détecter la présence de l'opérateur sachant que mon programme devra détecté les opérateurs suivant /,*,+,-.

    Je les aient donc mis dans une liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    operation = ["+", "-", "/", "*"]
    Je me suis dit que j'allais commencé par la base c'est-à-dire détecter si la saisie contient un opérateur grâce à un if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if saisie[i].__contains__(operation[i]):
    Après je suis totalement confus je souhaiterais créer une liste qui déterminera la partie gauche et droite de mon calcul donc pour 15 + 20 le programme créerai une liste comme celle-ci :
    Donc voici mes questions :

    Comment faire pour récupérer le rang de l'opérateur qui a été détecté ? (c'est pour pouvoir identifier l'opérateur qui a été saisie)

    Comment faire pour créer cette liste grâce au contrôle de saisie ?

    Je vous remercie d'avance pour les personnes qui pourront m'aider !

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Pour détecter les opérateurs vous pouvez procédez comme ça (2 facons ici)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    saisie = "21/3"
     
    operations = ["+", "-", "/", "*"]
     
    detect_op = []
    for operation in operations:
        if operation in saisie :
            detect_op.append(operation)
     
    print(detect_op)
     
    detect_op2 = set(saisie).intersection(set(operations))
    print(detect_op2)
    Là ca vous donne la liste (ou le set) des opérateurs détectés. Si vous ne voulez qu'il y ait qu'un seul opérateur à vous de renvoyer une erreur à l'utilisateur si cette liste a une longueur plus grande que 1, et sinon de faire la suite du programme en considérant le seul et unique opérateur présent dans cette liste.

    Ensuite vous pouvez vous servir :
    1) de la méthode .index() qui va vous donné la position d'un caractère que vous chercher (l'opérateur) puis ensuite avec les notations en slice vous pouvez avoir l'avant et l'après
    2) soit vous faites appel à la méthode split, en lui donnant comme paramètre l'opérateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    saisie = "21/3"
    print(saisie.split('/')) ###  --> ["21","3"]

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 748
    Points : 31 086
    Points
    31 086
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par iR3SH Voir le message
    Je les ai donc mis dans une liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    operation = ["+", "-", "/", "*"]
    Déjà le tuple est plus indiqué (pourquoi utiliser un objet qui permet la modification de ses éléments si on n'a pas l'intention de les modifier ?) => operation = ("+", "-", "/", "*").
    Maintenant si chaque élément ne contient qu'un caractère, alors on peut les mettre dans une chaine. Ca conservera la possibilité de rechercher ou d'itérer et c'est plus simple à écrire => operation = "+-*/".

    Citation Envoyé par iR3SH Voir le message
    Je me suis dit que j'allais commencé par la base c'est-à-dire détecter si la saisie contient un opérateur grâce à un if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if saisie[i].__contains__(operation[i]):
    On n'utilise pas des méthodes cachées. Déjà elles peuvent varier selon le type et surtout elles ne servent qu'à supporter les opérations "officielles". Et pour ça il existe "in/not in" => if operation[i] in saisie
    Citation Envoyé par iR3SH Voir le message
    Après je suis totalement confus je souhaiterais créer une liste qui déterminera la partie gauche et droite de mon calcul donc pour 15 + 20 le programme créerai une liste comme celle-ci :
    lg_53 part sur l'idée du split() qui permet de créer un tableau d'items découpés selon un symbole de séparation ce qui est à priori le plus simple mais qui montrera ses limites dès que tu voudras gérer des syntaxes plus complexes telles que "15 + 20 - 8". A partir de là, tu pourras t'orienter vers les regex qui te permettent de décrire une expression de façon "symbolique" telle que "nombre suivi de certains caractères suivi ou pas de nombre etc"...

  4. #4
    Membre du Club
    Homme Profil pro
    Alternant
    Inscrit en
    Octobre 2019
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 48
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Merci pour l'aide je débute à peine dans ce langage, j'ai réussi à faire ce que je voulais sans le split malheureusement mais je vais essayer avec aussi je suis fasciné par les multiples possibilités pour arrivé au même point dans la programma et de pouvoir en tirer les avantages et inconvénients des méthodes!

    Citation Envoyé par lg_53 Voir le message
    Merci pour ton aide j'essayerai ta méthode

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/10/2015, 11h56
  2. [XL-2000] Masque de saisie, besoin d'aide
    Par Rolandin dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/05/2013, 09h43
  3. Besoin d'aide saisie auto et clic dans IE
    Par sxs199 dans le forum VBScript
    Réponses: 4
    Dernier message: 17/04/2010, 20h29
  4. Besoin d'aide pour formulaire de saisie SVP
    Par nric7 dans le forum IHM
    Réponses: 1
    Dernier message: 21/07/2009, 10h40
  5. Réponses: 7
    Dernier message: 11/05/2007, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo