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 :

pb avec la fonction raw_input


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut pb avec la fonction raw_input
    bonjour,
    j'ai dans mon programme la fonction raw_input, je dois entrer une valeur qui peut-être de ces différents types : 5M, 5e6, 500000 qui donnent tous les même résultats, dans mon prog, je dis que si c'est 5M qui est entré donc ça devient 5e6 en float, mais si je rentre la vrai valeur, ben mon programme plante. j'ai fait une condition sur le type qui est entré avec le raw_input, et quelque soit l'entrée 5M ou 5e6, le programme me renvoie type<str>.
    j'ai voulu faire une condition, mais je ne sais pas comment l'écrire :
    la condition serait que si mon entrée peut se transformer en float, alors condition 1, si l'entrée ne peut pas être transformer en float, alors deuxième condition...
    voici l'exemple de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    startF = raw_input("Fréquence de départ : ( cliquer sur <ENTER> pour valider ) ")
     
    chk = "k"
    lcStartF = len(startF)-1
    typStartF = float(startF)
    if typStartF == float() :
        print 'condition1'
        valFdeb = float(startF)
    else :
        if startF[lcStartF:] == chk :
            print 'condition2'
            valFdeb = float(startF[:lcStartF])*1e3
     
    print 'valeur de départ', valFdeb
    si je rentre 5 voilà ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Fréquence de départ : ( cliquer sur <ENTER> pour valider ) 5
    valeur de départ
     
    Traceback (most recent call last):
      File "T:/Mesure dimensionnelle Paramètre S/Programme Python/freq test.py", line 17, in <module>
        print 'valeur de départ', valFdeb
    NameError: name 'valFdeb' is not defined
    en un mot le prog ne rentre pas dans la condition 1

    si je rentre 5k
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Fréquence de départ : ( cliquer sur <ENTER> pour valider ) 5k
     
    Traceback (most recent call last):
      File "T:/Mesure dimensionnelle Paramètre S/Programme Python/freq test.py", line 8, in <module>
        typStartF = float(startF)
    ValueError: invalid literal for float(): 5k
    donc blocage dès le départ...
    je retourne le truc dans tous les sens, mais je ne vois pas comment faire.

    Merci pour votre aide

    PAtricia

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    avec des chiffres entiers et raw_input

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int(raw_input('Entrer une valeur'))
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input('Entrer une valeur')
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(raw_input('Entrer une valeur'))
    Pour des strings

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    raw_input('Entrer votre phrase')
    Pour du float (nombres à virgule)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float(raw_input('Entrer un nombre'))
    Et encore bien d'autres solutions

  3. #3
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour patricia,

    Un des principes de la programmation python est "il est plus facile de demander pardon que de demander la permission", cad qu'il faut mieux essayer une action et gérer une exception que de vérifier avant chaque action si les conditions sont réunis.

    Dans ton problème, il te faut juste gérer l'exception que lève le transtypage en float:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> t = 'toto'
    >>> float(t)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for float(): toto
    >>> try:
    ...     t = float(t)
    ...     print 'transtypage reussi'
    ... except ValueError:
    ...     print "t ne semble pas etre transformable en float!"
    ... 
    t ne semble pas etre transformable en float!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut merci à vous deux
    je prends note et je teste,
    merci pour vos conseils

    Patricia

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut merci Pacificator
    grâce à tes conseils, j'ai résolu mon prob
    merci encore

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

Discussions similaires

  1. pb caractères accentués avec la fonction raw_input et la fenêtre OS
    Par bourgui78 dans le forum Général Python
    Réponses: 2
    Dernier message: 27/08/2008, 13h31
  2. Retourner une valeur avec une fonction
    Par stephtbest dans le forum ASP
    Réponses: 4
    Dernier message: 31/10/2003, 16h37
  3. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

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