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 :

Besion d'aide sur un projet sous Python


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Points : 24
    Points
    24
    Par défaut Besion d'aide sur un projet sous Python
    Slt tout le monde, je suis nouveau en programmation python et j'ai besoin d'un peu d'aide pour le projet suivant(réalisé sous windows avec pyhton 2.3):

    Il est question de créer une nouvelle interface descriptive pour les données des clients d'un opérateur téléphonique. L'interface doit être une séquence de suivi d'attributs séparé par ":". Chaque attribut identifier est suivi par un sign " = " et la valeure de l'attribut:
    Exemple: id1 = value1;id2=value2;.....
    Les attributs des identifiers doivent être constitué unqiquement de caractères [a-z].
    les attribues des valeurs peuvent prendre toutes valeurs excepté les caractères spéciaux.

    Pour la première partie du problème d'affichage ne me cose pas de problème. La question est comment introduir des champs de saisies de données pour les attributs et les valeures en python.
    Voici les premières ligne de code pour l'affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    def buildConnectionString(params):
            """Build a connection string from a dictionary of parameters.
            Returns string."""
            return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
     
    if __name__ == "__main__":
            myParams = {
                        "cn":"customer name", \
                        "bw":"bandwidth", \
                        "tl":"Telco Line identification", \
                        "lg":"Line Group Member ID", \
                        "st":"Status", \
                        "si":"Service ID", \
                        "di":"Destination Inteface", \
                        "dt":"Destination Type", \
                        "no":"Free from note"
                        }
            print buildConnectionString(myParams)
    Pour ceux qui souhaitent plus d'infos sur le problème merci de me contacter sur les mail présentssur mon profils, et merci d'avance!!!

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 403
    Points
    403
    Par défaut
    Je ne vois pas trop la question !

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Je ne comprends pas non plus tres bien la question.
    Est-ce que ceci t'apporte quelque chose ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import re
     
    patId = re.compile('[a-z]+\Z')
     
    bla = "Entrer l'attribut d'identifiant : "
    while 1:
        attrib = raw_input(bla)
        print
        if patId.match(attrib):
            break
        else:
            print 'Les lettres minuscules sont les seuls caracteres autorises.'
            bla = "Recommencez: entrez un nouvel attribut d'identifiant : "

    Remarques:
    - pourquoi utiliser la version 2.3 de Python ? Parce que les clients sont des dinosaures de la période du Trias ?
    - c'est quoi une "interface descriptive de données" , c'est uniquement pour afficher des données ? mais alors pourquoi parler plus loin de champs de saisie ?
    - c'est quoi une "séquence de suivi d'attributs" ?

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Tout d’abord je tiens à remercier tous ceux qui ont prêté attention à mon message :
    Pour répondre à tes questions :
    - C’est moi qui travaille sur Python 2.3 car c’est le seul qui ne requière pas de droits administrateurs, vu que je travaille sur un pc en session personnelle.

    - Je parle de champs de saisie, car comme tu l’as mis sur le code, il faut effectivement que l’on commence par saisir les identifier qui doivent être en minuscule et avoir deux lettre pas plus, et les values qui dépendent de chaque identifer (par exemple : identifer1 correspond à cn (costumer name) et sa value doit contenir le une abréviation ou la totalité du nom saisie ( donc les caractères minuscules ou majuscules) et ainsi de suite

    Il ne faut pas oublier que l'affichage doit se faire comme décrit précédemment !

  5. #5
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Citation Envoyé par anass_59 Voir le message
    Tout d’abord je tiens à remercier tous ceux qui ont prêté attention à mon message :
    Pour répondre à tes questions :
    - C’est moi qui travaille sur Python 2.3 car c’est le seul qui ne requière pas de droits administrateurs, vu que je travaille sur un pc en session personnelle.
    Oui mais cette version est quand même une grand mère maintenant !
    Tu ne peux pas demander à un admin de te l'installer ? Ou travailler depuis un liveCD linux sur lequel Python est installé ?

    - Je parle de champs de saisie, car comme tu l’as mis sur le code, il faut effectivement que l’on commence par saisir les identifier qui doivent être en minuscule et avoir deux lettre pas plus, et les values qui dépendent de chaque identifer (par exemple : identifer1 correspond à cn (costumer name) et sa value doit contenir le une abréviation ou la totalité du nom saisie ( donc les caractères minuscules ou majuscules) et ainsi de suite

    Il ne faut pas oublier que l'affichage doit se faire comme décrit précédemment !
    C'est quoi ta question ? Tu ne sais pas faire un point en particulier ?
    Tu te demandes avec quel framework graphique tu vas travailler ?

    Réponds déjà à ces questions, après on verra comment t'aider si possible !

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Re !!!

    Pour le problème de version de python, il n'y a pas de problème, même si il y a des différentes entre la version 2.3 et les dernière versions, je pourrais régler le problème lors de la version final du projet.

    Concernant la question je vais essayer d'être direct cette fois:
    - Comment faire pour faire entrer une liste de donnée sous python ( sans passer par SQL)

    - Qui peux m'expliquer rapidement comment faire pour imposer des condition sur une donnée entrée. ( Type et nombre de caractère authorisé)
    Merci d'avance, et j'espère que cette fois c'est plus clair

  7. #7
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Citation Envoyé par anass_59 Voir le message
    Concernant la question je vais essayer d'être direct cette fois:
    - Comment faire pour faire entrer une liste de donnée sous python ( sans passer par SQL)
    Tout dépend où sont stockées tes données ?
    Si tu as un fichier texte, ben tu le lis depuis ton programme.
    Si tu as un fichier XML, pareil sauf que tu as des outils qui t'aident à mieux lire.
    Si tu as des données que tu entres à la volée, tu traitent en fonction...

    Je ne peux pas te dire autre chose au vu des faibles détails que tu dévoiles
    Citation Envoyé par anass_59 Voir le message
    - Qui peux m'expliquer rapidement comment faire pour imposer des condition sur une donnée entrée. ( Type et nombre de caractère authorisé)
    Merci d'avance, et j'espère que cette fois c'est plus clair
    Euh... bon on va essayer...

    Si je reçois dans la variable tel un numéro de téléphone, je veux vérifier qu'il soit au format FRANCE par exemple : 0[1-6][0-9]{8}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import re
    # Définition du pattern du numéro téléphone français
    pattern_tel = '0[1-6][0-9]{8}'
    # Demander à l'utilisateur son numéro de tél
    num = raw_input
    # Vérifier l'entrée
    if re.match(pattern_tel,num):
       # Si ok, on affiche le numéro
       print num
    C'est bon ?
    Regarde du côté des expressions régulières (regexp) pour valider les données.

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Merci pour ton aide
    Pour la partie de la limitation à la taille celle là marche aussi je crois? :o

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    phonepatterne = re.compile(r'^\d(8)$')
    Pour les lettres il y a cette ligne de code que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    patId = re.compile(r'^[a-z]+\Z$')
    Comment limiter le nombre de lettre à saisir dans ce cas là ?

  9. #9
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Citation Envoyé par anass_59 Voir le message
    Merci pour ton aide
    Pour la partie de la limitation à la taille celle là marche aussi je crois? :o

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    phonepatterne = re.compile(r'^\d(8)$')
    Pour les lettres il y a cette ligne de code que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    patId = re.compile(r'^[a-z]+\Z$')
    Comment limiter le nombre de lettre à saisir dans ce cas là ?
    C'est exactement la même chose sauf que compiler le pattern au préalable assure une plus grande rapidité à l'exécution.
    Pour le phonepattern = re.compile(r'^\d(8)$'), si tu le lis façon regexp, il te dit qu'il veut 8 digits (quelqu'ils soient attention!).
    Pour un numéro de téléphone français, ce serait d'ailleurs plutôt 10.

    Pour patId,pour limiter le nombre de lettres, tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    patId = re.compile(r'^[a-z]{8}\Z$')
    pour un nombre de lettres égal à 8. Pour faire un min/max... euh je vois pas.

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Merci beaucoup pour ton aide, ça m'as vachement aidé, il fallait enlever le + et c'est ca qui bugait le système

    Au fait, si je me permet une dernière requette avant de fermé la discussion, t'aurais pas un lien où il existe une explication détaillé de l'analyse lexical des text dans le python, car c'est en gros ce qui m'est demmandé de faire.
    Je trouve pleins d'ouvrage et de bouquin, mais c'est pleins de trucs dont je n'ai pas besoin.
    Encore merci

  11. #11
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    analyse lexicale ??? euh... si tu veux faire des regexp ? commence par Google. Je ne te serais d'aucun secours.

    Ravi d'avoir pu t'aider

  12. #12
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    1) Qu'est ce que tu appelles "analyse lexicale" ?

    Le mot lexique possède en linguistique un sens si riche qu'il me semble largement excéder ce qui t'est nécessaire pour répondre à tes besoins et ton objectif.
    De plus, il est en langage courant d'un emploi approximatif qui n'est pas pour apporter de la lumière dans la façon déjà floue que tu as de décrire ton problème.


    2)
    il fallait enlever le + et c'est ca qui bugait le système
    Ça ne bugue rien du tout. Ça fait ce que c'est destiné à faire, et ça ne peut pas faire ce à quoi ce n'est pas destiné.
    Pour obtenir des réponses plus précisément en adéquation avec tes besoins, il faut décrire tes problèmes et tes besoins plus précisément.

    3)
    compiler le pattern au préalable assure une plus grande rapidité à l'exécution.
    Non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    patX = re.compile('motif')
    m = patX.match(ch)
    prendra grosso modo le même temps que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = re.search('motif',ch)
    Par contre si on a à faire mille fois m = re.search('motif',ch) , il vaudra mieux définir une regex patX = re.compile('motif') une seule fois: réutilisée mille fois, ce sera cette fois plus rapide que d'obliger le programme à la recalculer à chaque fois au sein du fonctionnement de la fonction search().

    4) Comment faire pour faire entrer une liste de donnée sous python

    Entrer dans quoi ? Que signifie "entrer" ici ?

    5)
    - Qui peut m'expliquer rapidement comment faire pour imposer des condition sur une donnée entrée. ( Type et nombre de caractère authorisé)
    Imposer une condition sur une donnée entrée, ce n'est pas la même chose que de vérifier après une entrée qu'elle est correcte.

    Il y a en effet deux façons de comprendre ton problème, puisque tu ne précises pas assez pour qu'une option s'impose à la compréhension plus que l'autre:

    - soit tu laisses saisir une entrée par l'utilisateur (c'est à dire il tape des caractères puis appuie sur le bouton ENTRÉE)
    et tu vérifies postérieurement à son entrée que les caractères entrés sont en conformité avec ce qui est attendu
    - soit tu fais surveiller par le programme chaque frappe de touche au moment de la saisie et il vérifie à chaque caractère frappé que ce caractère est conforme, tout ceci avant qu'il y ait eu un quelconque appui de la touche ENTRÉE

    Le bout de programme que je t'ai proposé fait la première chose. Il était destiné tout autant à t'ouvrir la voie dans ce cas de figure, qu'à obtenir un
    éclaircissement sur ton objectif ( "Est-ce que ceci t'apporte quelque chose ? ") Sur ce dernier point, je n'ai pas eu de réponse claire.

    J'ai aussi proposé ce bout de code parce que c'était le plus simple pour moi: je ne sais pas coder la seconde façon de faire. Je crois qu'il y a eu une discussion dans ce forum il y a quelques semaines sur cette 2ième façon, mais aucune solution n'a été trouvée. Personne ne sait comment faire surveiller chaque frappe de touche par Python. Du moins c'est ce que j'ai retenu.


    6)
    - Qui peut m'expliquer rapidement comment faire pour imposer des condition sur une donnée entrée. ( Type et nombre de caractère authorisé)
    Je crois que ton problème est là: Qui peut m'expliquer RAPIDEMENT comment faire
    J'ai l'impression que tu te lances dans l'écriture dans un petit programme sans avoir ni une connaissance suffisante des fonctionnements précis des méthodes ni une vue d'ensemble des possibilités de Python, parce que tu n'as pas pris le temps de potasser un peu avant de commencer et que tu sembles pressé de trouver des solutions sans creuser par toi même après avoir commencé.

    Moi ça ne me dérange pas outre mesure. Ce qui me semble singulier c'est qu'en plus tu exposes tes problèmes de façon minimaliste.

    Je n'aurais pas écrit ceci si panda 31 ne s'était lui même un peu agacé, ce qui a confirmé mon impression de départ.


    7) Dans mon code il n'y a pas de carret ^ dans la RE parce que j'utilise ensuite match() .
    http://www.python.org/doc/2.5.2/lib/...searching.html


    8) Pour faire un min/max, c'est comme tout: il suffit de lire la docu
    http://www.python.org/doc/2.5.2/lib/re-syntax.html



    Si tu as des questions sur les regex, n'hésites pas à poser des questions, j'aime bien ce sujet.

    Sinon, pour finir, si les valeurs de tes identifiants doivent se limiter aux valeurs "cn", "tl" etc... le plus simple c'est peut être de faire une vérification
    après une saisie.

    Allez salut.

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

Discussions similaires

  1. Besoin d'aide sur un projet (ComboBox-FlexGrid-Recordset).
    Par zizou2007 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2007, 19h54
  2. Aide sur un projet en méthodes programmation systèmes
    Par citadine dans le forum Réseau
    Réponses: 6
    Dernier message: 17/01/2007, 12h40
  3. aide sur un projet de carte a puce
    Par abdel5 dans le forum C++
    Réponses: 1
    Dernier message: 10/01/2007, 00h12
  4. Aide sur un projet
    Par riadh_ado dans le forum MFC
    Réponses: 1
    Dernier message: 08/07/2006, 21h42

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