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

EDI/RAD Python Discussion :

[PyDev] Pb avec la console intéractive


Sujet :

EDI/RAD Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de debutant001
    Profil pro
    Eric
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Eric

    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Par défaut [PyDev] Pb avec la console intéractive
    Bonjour à tous,

    Je ne sais pas si je suis exactement dans le bon forum. Le cas échéant, merci à un modérateur de le mettre à sa meilleure place.

    Je m'initie à la programmation objet à l'aide du HS N°77 de Linux Mag. (sans vouloir faire de pub)
    Etant débutant, je suis pour l'instant scrupuleusement ce qui est proposé dans ce mook et ai donc installé l'EDI Eclipse Luna (4.4.2) + PyDev (3.9.2).

    Au tout début de cette formation, dans la création/définition d'une classe (Carte.py) on teste la validité des deux arguments de cette classe et dans le cas contraire, on arrête l'exécution du programme par un exit(1) :

    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
    class Carte:
        valeurs = (None, None, 2, 3, 4, 5, 6, 7, 8, 9, 10, "Valet", "Dame", "Roi", "As")
        couleurs = ("Coeur", "Carreau", "trèfle", "Pique")    
     
        def __init__(self, val, coul):
            if val < 2 or val > 14:
                print("Erreur : La valeur d'une carte est comprise entre 2 et 14")
                exit(1)
            if coul < 0 or coul > 3:
                print("Erreur : Le code couleur d'une carte est compris entre 0 et 3")
                exit(1)
            self.valeur = val
            self.couleur = coul
     
        def __str__(self):   
            return str(Carte.valeurs[self.valeur]) + " de " + Carte.couleurs[self.couleur]
    Mon pb est que si je teste cette classe, et surtout si je fais volontairement une erreur (pour vérifier les if) dans la console intéractive Python, dès la 1ère erreur je ne peux plus rien tester : je suis obligé d'arrêter la console courante et d'en ouvrir une autre pour recommencer mes tests :

    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
    19
    20
    >>> import sys; print('%s %s' % (sys.executable or sys.platform, sys.version))
    PyDev console: starting.
    >>> 
    /usr/bin/python3.2 3.2.3 (default, Feb 20 2013, 14:44:27) 
    [GCC 4.7.2]
    >>> from Carte import Carte
    >>> c1 = Carte(4,1)
    >>> print(c1)
    4 de Carreau
    >>> c2 = Carte(13,5)
    Erreur : Le code couleur d'une carte est compris entre 0 et 3
    >>> c2 = Carte(13,2)
    Console already exited with value: 1 while waiting for an answer.
    >>> print(c2)
    Console already exited with value: 1 while waiting for an answer.
    >>> print(c1)
    Console already exited with value: 1 while waiting for an answer.
    >>> 
    Console already exited with value: 1 while waiting for an answer.
    >>>
    Le message d'erreur me dit que la console a déjà été quittée avec la valeur 1... certes, mais vu que j'ai toujours la main et que ma classe est toujours chargée je devrais pouvoir continuer mes tests, non ?
    Vu mon niveau et comme je n'ai encore jamais utilisé d'EDI (jusqu'à présent : vi + interpréteur Python) je ne sais pas si cette erreur est normale, ou si je me suis planté quelque part (j'ai pourtant re-vérifié plusieurs fois) ou encore si c'est l'auteur du mook qui a fait une erreur.
    J'ai aussi cherché sur le Net mais je n'ai rien trouvé s'approchant précisément de mon pb.

    Merci pour votre aide,
    Cordialement
    Eric

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par debutant001 Voir le message
    Vu mon niveau et comme je n'ai encore jamais utilisé d'EDI (jusqu'à présent : vi + interpréteur Python) je ne sais pas si cette erreur est normale, ou si je me suis planté quelque part (j'ai pourtant re-vérifié plusieurs fois) ou encore si c'est l'auteur du mook qui a fait une erreur.
    J'ai aussi cherché sur le Net mais je n'ai rien trouvé s'approchant précisément de mon pb.
    C'est la console de PyDev qui est buggée: exit(1) devrait la fermer mais elle reste ouverte dans un état zarbi.
    Utilisez plutôt la console "normale" - l'interpréteur Python -.

    Mon pb est que si je teste cette classe, et surtout si je fais volontairement une erreur (pour vérifier les if) dans la console intéractive Python, dès la 1ère erreur je ne peux plus rien tester : je suis obligé d'arrêter la console courante et d'en ouvrir une autre pour recommencer mes tests :
    Dès qu'exit a été exécuté, çà sort: il faudrait mettre quelque chose de "moins fort", genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            if val < 2 or val > 14:
                raise ValueError("Erreur : La valeur d'une carte est comprise entre 2 et 14")
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti Avatar de debutant001
    Profil pro
    Eric
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Eric

    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Par défaut
    Merci wiztricks pour votre réponse.

    Citation Envoyé par wiztricks
    Utilisez plutôt la console "normale" - l'interpréteur Python -.
    Je suppose que vous voulez dire l'interpréteur Python en CLI mais en dehors d'Eclipse, c'est bien ça ? (comme je faisais avant en fait)

    Sinon, j'ai testé le raise ValueError.
    Effectivement, c'est nettement mieux (même dans la console Python d'Eclipse) car je peux maintenant continuer mes tests sans avoir à arrêter la console courante. (et donc avancer plus vite dans mon apprentissage )

    Par contre, ça m'indique en détail quelle erreur s'est produite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> c1 = Carte(15,3)
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "/home/login/Informatique/Dev/Python/Jeu_Carte/Carte.py", line 7, in __init__
        raise ValueError("Erreur : La valeur d'une carte doit être comprise entre 2 et 14 !")
    ValueError: Erreur : La valeur d'une carte doit être comprise entre 2 et 14 !
    >>>
    C'est pratique lorsque l'on conçoit un programme mais c'est pas super beau une fois celui-ci finalisé... (je pensais que ça m'aurait affiché que mon propre message d'erreur)
    J'ai alors cherché du coté try/except mais j'ai pas tout super bien compris, et les exemples qui sont parfois donnés sont trop généraux/succincts : est-il possible d'intégrer un try/except dans une classe ?
    Et si oui par contre, je ne vois vraiment pas quoi mettre dans le try !

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par debutant001 Voir le message
    C'est pratique lorsque l'on conçoit un programme mais c'est pas super beau une fois celui-ci finalisé... (je pensais que ça m'aurait affiché que mon propre message d'erreur)
    J'ai alors cherché du coté try/except mais j'ai pas tout super bien compris, et les exemples qui sont parfois donnés sont trop généraux/succincts : est-il possible d'intégrer un try/except dans une classe ?
    Et si oui par contre, je ne vois vraiment pas quoi mettre dans le try !
    Avec les machines, il ne fait pas "penser" mais coder pour que çà affiche ce que vous attendez.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> def foo():
    ...     raise ValueError('message')
    ...
    la fonction "foo" se contente de lever une exception.
    Cette fonction peut être appelée par le code principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> def main():
    ...     foo()
    ...
    appelé directement, on aura un "traceback" sympa pour comprendre ce qu'il s'est passé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> main()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in main
      File "<stdin>", line 2, in foo
    ValueError: message
    >>>
    Mais vous pouvez attraper l'erreur et afficher ce que vous voulez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> try:
    ...     main()
    ... except Exception as e:
    ...     print (e.args[0])
    ...
    message
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/04/2013, 10h42
  2. Probleme avec la console
    Par maxstilde dans le forum Général Python
    Réponses: 2
    Dernier message: 03/08/2006, 11h35
  3. Pb avec la console de Firefox
    Par an.onyme.007 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 18/05/2006, 15h44
  4. PB d'attente avec application console
    Par T-B dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2006, 17h06
  5. [C#] Lancer et dialoguer avec une console ?
    Par Selenite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/09/2004, 19h48

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