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 :

fonction transformation string->int


Sujet :

Python

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Points : 78
    Points
    78
    Par défaut fonction transformation string->int
    Bonjour,

    J'ai un projet à faire avec un language qui m'est inconnu: Python.
    Je suis actuellement en train de lire des tutoriels, oeuvrages mais je ne trouve pas la reponse à ma question. voila mon sujet:

    The task is to implement an interpreter for a very little language the syntax of which is given in the grammar below:

    <program> ::= <expr> { ',' <expr> }* '.'
    <expr> ::= <term> { ( '+' | '-' ) <term> }*
    <term> ::= <factor> { ( '*' | '/' ) <factor> }*
    <factor> ::= integer

    For example, the following input

    2 + 3, 6 - 2, 8 + 3 * 2.

    gives the following output:

    5, 4, 14


    Question 1:
    Je dois verifier que la <factor> donne est bien un entier. Je ne vois pas comment ecrire ma fonction pour tester cela et me revoyer un boolean.
    Pour le retour de lavaleur je sais que je dois utiliser les valeurs 1 ou 0.
    Il y a la fonction int() qui me transforme ma chaine en intier mais je ne vois pas comment l'exploiter.

    Question 2:
    Et il possible de recuperer les informations une par une. C'est a dire mon intier, puis mon operateur,... (l'equivalent du cin >> mastring en C++)
    Je sais qu'il y a la fonction raw_input() mais je crois qu'elle me prend tout ce qui a été tappé (l'equuivalent du getlien(mastring) en C++).

    merci d'avance de vos reponses.

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Pour la question 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "msdmslkd".isdigit()
    -> False
    "1234".isdigit()
    -> True
    Dans le python tout est bon !
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 52
    Points : 55
    Points
    55
    Par défaut Re: fonction transformation string->int
    Citation Envoyé par Edta
    Question 1:
    Je dois verifier que la <factor> donne est bien un entier. Je ne vois pas comment ecrire ma fonction pour tester cela et me revoyer un boolean.
    Pour le retour de lavaleur je sais que je dois utiliser les valeurs 1 ou 0.
    Il y a la fonction int() qui me transforme ma chaine en intier mais je ne vois pas comment l'exploiter.
    Je suis pas sûr que c'est ce que tu veux en fait, je sui fatiguer là lol!!!! Si tu veux vérifier que c'est un entier il y a la fonction type() par exemple tu veux vérifier que la variable a est un entier tu fais donc :
    Et ca marche pour tout les types, par exmple tu vérifie que c'est un string tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if type(a)==type("Hello World!")):
    Mais pour un classe ça te renvoie juste si c'est une classe ou pas je crois, ce qui est embêtant. Ca ne peut pas te renvoyer si c'est la classe vecteur ou matrice par exemple. Mais pour ton cas on s'en fou, c'est un précision comme ça!

    Citation Envoyé par Edta
    Question 2:
    Et il possible de recuperer les informations une par une. C'est a dire mon intier, puis mon operateur,... (l'equivalent du cin >> mastring en C++)
    Je sais qu'il y a la fonction raw_input() mais je crois qu'elle me prend tout ce qui a été tappé (l'equuivalent du getlien(mastring) en C++).
    J'ai mal compris ta quéstion, peux-tu reformuler?? A moins que ce ne soit moi . Bon mais je vais essayer de répondre!
    Si tu veux juste l'équivalent tout bête d'un cin, je ne crois pas que ça existe. Il y a une alternative avec le modeule sys d'abord tu dfoit importer sys en début de programme :

    Ensuite comme en c++ tu a argv auquel tu accède en tapant sys.argv[i]. Je ne sais pas trop comment ça marche avec les autres editeurs, mais sous Python IDE, qaund tu fais Ctrl+r pour lancer le programme, tu as une partie argument dans lequel tu peut rentrer des variables séparé par des espace. Par exemple tu tapes :
    1 2 "chaton"
    dans la partie argument quand tu exéxute un fichier C:\truc.py, alors si tu fais print arg[0] il te renverra C:\truc.py, si tu fais print argv[1] il te renvera 1, si tu fais print argv[3] il te renvera "chaton", vois-tu?
    sys.argv[0] te renvoie l'adresse de ton fichier .py, les autres sont tes arguments!
    Tu peux aussi te mettre dans ta consol DOS, et taper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\truc.py 1 2 "chaton"
    Ce qui reviens au même

    Ensuite pour récupérer les opérateur tu est obligé d'écrire une fonction pour analyser un a un les éléments . Sache que si tu écris 1+2 en argument il te renvoie un string "1+2" alors tu peut décortiquer à partir de la. Enfin je vois que ça pour l'instant!

    Voilou je ne sais pas si ça t'aide...

  4. #4
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    tu peux utiliser 'eval'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> eval('2+3,6-2,8+3*2')
    (5, 4, 14)

Discussions similaires

  1. Transformer une string en int
    Par blueice dans le forum AppleScript
    Réponses: 1
    Dernier message: 28/09/2014, 18h55
  2. Transformation d'un String en Int
    Par titi1881 dans le forum Langage
    Réponses: 3
    Dernier message: 25/09/2010, 23h58
  3. Transformer une variable string en int
    Par Nikogram dans le forum C#
    Réponses: 4
    Dernier message: 18/10/2009, 20h47
  4. [Debutant]Transformer string en int
    Par htaou dans le forum SL & STL
    Réponses: 7
    Dernier message: 09/09/2005, 21h28

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