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 :

Détecter si on ne saisit pas un entier.


Sujet :

Python

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut Détecter si on ne saisit pas un entier.
    Bonjour

    J'ai un petit souci avec une instruction conditionnelle if,elif.

    Je souhaite arrêter le programme, si on entre une variable autre qu'un entier.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    def saisirafficher():
     
        print("Conversion d’un entier")
     
        ch = int( input("Saisissez 1 pour convertir un entier en binaire. Saisissez 2 pour convertir un binaire en entier "))
     
        n = int(ch)
     
        if type(n) != int:
     
            print('Vous n\'avez pas saisi un entier')
     
        elif n == 1:
     
            print("Conversion de base 10 en base 2\n")
     
            x = int(input("Saisissez un nombre entier. "))
     
            print(conversbdeux(x))
     
        elif n == 2:
     
            print("Conversion de base 2 en base 10\n")
     
            nbbin = int(input("Saisissez un nombre binaire. "))
     
            conversbdix(nbbin)
     
        elif n != 1 & n != 2:
     
            print("Vous avez saisi un nombre différent de 1 et 2. ")
     
     
     
    saisirafficher()
    Voici l'erreur.

    ch = int( input("Saisissez 1 pour convertir un entier en binaire. Saisissez 2 pour convertir un binaire en entier "))
    ValueError: invalid literal for int() with base 10: 'g'
    Normalement, j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    except ValueError:
     
         print("Vous avez saisi un nombre différent de 1 et 2. ")
    Que dois je modifier ?

    Merci !!

    A bientôt
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    Bonjour.

    Il faut insérer un try/except à l'endroit opportun et s'assurer que l'exception ValueError n'est pas levée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ch = None
    while not ch:
        try:
            ch = int(input("saisir la valeur numérique"))
        except ValueError:
            print("la valeur saisie est incorrecte !")
    print(f"valeur saisie = {ch}")

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut
    Re bonjour

    Ca fonctionne, merci !!


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    def saisirafficher():
     
        print("Conversion d’un entier")
     
        ch = None
     
        while not ch:
            try:
     
                ch = int( input("Saisissez 1 pour convertir un entier en binaire. Saisissez 2 pour convertir un binaire en entier  "))
     
            except ValueError:
     
                print("Vous n\'avez pas saisi un entier")
     
        n = int(ch)
     
        if n == 1:
     
            print("Conversion de base 10 en base 2\n")
     
            x = int(input("Saisissez un entier "))
     
            print(conversbdeux(x))
     
        elif n == 2:
     
            print("Conversion de base 2 en base 10\n")
     
            nbbin = int(input("Saisissez un nombre binair "))
     
            conversbdix(nbbin)
     
        elif n != 1 & n != 2:
     
            print("Vous avez saisi un nombre différent de 1 et 2. ")
     
     
     
    saisirafficher()
    A bientôt
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 369
    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 369
    Points : 36 908
    Points
    36 908
    Par défaut
    Citation Envoyé par argon Voir le message
    Que dois je modifier ?
    Le prompt affiché demande à l'utilisateur: "Saisissez 1 pour convertir un entier en binaire. Saisissez 2 pour convertir un binaire en entier".
    Quelque part, que la saisie soit un entier est moins important que de vérifier qu'on a bien récupéré '1' ou '2' puisqu'on ne calcule rien avec.
    '1' et '2' sont juste des caractères qu'on pourrait remplacer par 'A', 'B'.

    Donc on peut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        ch = input(...)
        if ch == '1':
           ... 
        elif ch =='2':
           ...
        else:
           # cas ou ch n'est ni '1' ni '2'
           ...
    Et de façon plus générale, comment coder avec le Python que vous maîtrisez plutôt qu'utiliser un python mal maitrisé pour faire joli sera plus profitable... de même que relire le chapitre de votre tuto. qui parle des exceptions lorsque vous avez des soucis avec sera plus bénéfique que demander de l'aide dans un forum (il y a plein d'autres concepts "autour" dont parlera le tuto qu'on n'abordera pas ici...)

    - 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. Détruire variable session (pas session entière)
    Par webrider dans le forum Langage
    Réponses: 8
    Dernier message: 30/03/2007, 20h53
  2. Réponses: 9
    Dernier message: 12/10/2006, 00h36
  3. DBGrid : mon texte ne s'affiche pas en entier dans la colonne
    Par socooooool dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/07/2006, 17h38
  4. contenu qui ne s'affiche pas en entier
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 02/11/2005, 12h34
  5. [JSP] page html pas générée entièrement
    Par enocet dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/04/2005, 14h50

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