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 d'un calcul contenant str et int


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut Pb d'un calcul contenant str et int
    Bonjour,

    Cela fait plusieurs fois que je change une expression de calcul qui ne marche pas tres bien et je finis par ne plus rien comprendre.

    nombp = 1+int(int(nbsec)/50)

    nbsec est une chaine de 4 caracteres composee exclusivement de caracteres ' ' '0' '1' '2' '3' '4' '5' '6''7' '8' '9'
    Il n'y a pas de . ni de ,
    Les chiffres sont toujours cales a droite, les blancs sont toujours devant les chiffres
    Exemples pour nbsec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    '   8'
    '   2'
    '   0'
    '  12'
    '  80'
    ' 345'
    ' 204'
    '1329'
    L'expression doit donner pour nombp la valeur
    1 pour nbsec de '1' a '49'
    2 pour nbsec de '50' a '99'
    3 pour nbsec de '100' a '149'
    etc..

    Mais j'ai pour le moment le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invalid literal for int() with base 10: ' '
    J'ai regarde la lPython Library, je ne comprends pas les phrases mises en couleur:

    int( [x[, radix]])
    Convert a string or number to a plain integer.
    If the argument is a string, it must contain a possibly signed decimal number representable as a Python integer, possibly embedded in whitespace.
    The radix parameter gives the base for the conversion and may be any integer in the range [2, 36], or zero.
    If radix is zero, the proper radix is guessed based on the contents of string; the interpretation is the same as for integer literals. If radix is specified and x is not a string, TypeError is raised. Otherwise, the argument may be a plain or long integer or a floating point number. Conversion of floating point numbers to integers truncates (towards zero). If the argument is outside the integer range a long object will be returned instead. If no arguments are given, returns 0.


    Merci de votre aide

  2. #2
    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
    Ton programme ne tenterait-il pas de faire sans nombre à un moment?
    --------------------------------------------------------
    Une tentative de traduction (je suis pas anglophone)
    If the argument is a string, it must contain a possibly signed decimal number representable as a Python integer, possibly embedded in whitespace.
    Si l'argument est un chaîne de caracteres, il peut contenir un nombre signé avec possibilité d'être entouré d'espaces.
    The radix parameter gives the base for the conversion and may be any integer in the range [2, 36], or zero.
    Le parametre radix, passé sous forme d'entier, determine la base de la conversion (base 10, base 16,...) compris entre 2 et 36.


    C'est approximativement ça... j'espere .....

  3. #3
    Membre confirmé
    Profil pro
    Agent de maîtrise
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Agent de maîtrise

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut
    Le tit script ci dessous marche bien .....

    ------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    lst =  [ '   8' , '   2' , '   0', '  12', '  80', ' 345' , ' 204' , '1329' ]
     
    for l in lst:
        nbsec = l ;
        nombp = 1+int(int(nbsec)/50) ;
        print "LST: " , l , " NOMBP: ", nombp ;
    -------------------------------------------------------------

    resultats:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>>  LST:     8  NOMBP:  1
    LST:     2  NOMBP:  1
    LST:     0  NOMBP:  1
    LST:    12  NOMBP:  1
    LST:    80  NOMBP:  2
    LST:   345  NOMBP:  7
    LST:   204  NOMBP:  5
    LST:  1329  NOMBP:  27
    --------------------------------

    Vois pas ton probleme ................

Discussions similaires

  1. Convertir des type str en int
    Par Taylor08 dans le forum Général Python
    Réponses: 1
    Dernier message: 14/03/2014, 11h06
  2. [XL-2007] Erreur de calcul de la fonction Int() partie entiére d'un Nb en VB
    Par GOLDINGMAROC dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 01/03/2012, 17h31
  3. Conversion de str en int
    Par wolvi01 dans le forum Général Python
    Réponses: 1
    Dernier message: 15/01/2011, 17h37
  4. convertion de nombre str en int ou float.. assez bizarre..
    Par italiasky dans le forum Général Python
    Réponses: 7
    Dernier message: 26/04/2008, 09h36
  5. Réponses: 4
    Dernier message: 26/03/2007, 22h55

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