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 :

except ValueError et print() [Python 3.X]


Sujet :

Python

  1. #1
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut except ValueError et print()
    Bonjour à tous,


    Quel est l'intérêt de mettre un

    avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("mauvaise réponse")
    Si c'est pour que le print ne s'affiche pas?

    Avec mes remerciements.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    Citation Envoyé par oceane751 Voir le message
    Si c'est pour que le print ne s'affiche pas?
    Le "print" ne s'affiche pas, c'est une instruction/fonction qui sera exécutée/appelée (ou pas) pour faire une opération bien définie.
    Une instruction/appel de fonction peut faire partie d'un bloc d'instructions qui sera exécuté sous certaines conditions/exceptions.
    Et si un bloc d'instructions n'est pas exécuté, c'est que les conditions ou l'exception correspondante ne sont pas vérifiées.

    Tout çà pour dire, que des instructions sorties de leur contexte n'ont pas trop de sens...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Si le print() est dans le bloc de l'except il s'affichera en cas d'erreur ValueError.

    Qu'est-ce qui te fais penser que ce print ne s'affichera pas ?

  4. #4
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Si le print() est dans le bloc de l'except il s'affichera en cas d'erreur ValueError.

    Qu'est-ce qui te fais penser que ce print ne s'affichera pas ?
    Je n'ai pas le print qui s'affiche

    voici mon petit code entier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    annee = input("Saisissez une chiffre :")
    annee = int(annee)
    try:
        assert annee > 3
        print("bonne reponse")
    except ValueError:
        print("mauvaise reponse")
    et l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Saisissez une chiffre :2
    Traceback (most recent call last):
      File "C:/Users/jo/Desktop/PROJETS PYTHON/assertion.py", line 4, in <module>
        assert annee > 3
    AssertionError
    merci!

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est normal. Quand la condition de "assert" est fausse, une exception AssertionError (et non ValueError) est générée (c'est dans la doc!).

    Donc: remplace ValueError par AssertionError dans le except, et ça marchera.

  6. #6
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    C'est normal. Quand la condition de "assert" est fausse, une exception AssertionError (et non ValueError) est générée (c'est dans la doc!).

    Donc: remplace ValueError par AssertionError dans le except, et ça marchera.
    ah! super! merci beaucoup !
    Ca fonctionne comme je veux!

    bonne journée

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    ValueError est l'exception que lèverait int si la chaine de caractère saisie n'est pas un nombre.

    Un code plus correct serait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    annee = input("Saisissez une chiffre :")
    try:
          annee = int(annee)
    except ValueError:
        print("veuillez saisir un nombre")
    else:
        try:
             assert annee >= 3
        except AssertionError:
             print ('mauvaise reponse')
        else:
             print ('bonne reponse')
    dit autrement, si une opération peut lever une exception, on l'emballe dans un try...except... et on gère les exceptions correspondantes. Et on évite de mettre trop d'instructions pouvant générer des exceptions dans le même bloc, sinon, ce sera difficile à gérer (quand on doit continuer l'exécution du programme plutôt que d'afficher une erreur).

    On pourrait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try:
      annee = int(annee)
      assert annee >= 3
    except ValueError:
        print("veuillez saisir un nombre")
    except AssertionError:
        print ('mauvaise reponse')
    else:
        print ('bonne reponse')
    mais ce n'est pas très propre (dans le cas général).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/11/2002, 14h30
  2. [CR] Print Engine error text
    Par afaraji dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/09/2002, 15h44
  3. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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