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 :

invalid literal for int() with base 10:


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Points : 43
    Points
    43
    Par défaut invalid literal for int() with base 10:
    Re-bonjour,

    Le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for c in string:
            tab.append(int(c))
    me donne l'erreur:
    invalid literal for int() with base 10: ''
    string est une chaine et je voudrais transformer chaque caractère en int avant de les envoyer dans un tableau.
    Je pensais que faire suffisait mais il semblerait que j'ai oublié quelques chose

    En vous remerciant pour l'attention porté à mon code.
    ci-dessous, mon code complet.
    a+

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #
    # problem 8 - project Euler
     
    import time
     
    string = """73167176531330624919225119674426574742355349194934
    96983520312774506326239578318016984801869478851843
    85861560789112949495459501737958331952853208805511
    12540698747158523863050715693290963295227443043557
    66896648950445244523161731856403098711121722383113
    62229893423380308135336276614282806444486645238749
    30358907296290491560440772390713810515859307960866
    70172427121883998797908792274921901699720888093776
    65727333001053367881220235421809751254540594752243
    52584907711670556013604839586446706324415722155397
    53697817977846174064955149290862569321978468622482
    83972241375657056057490261407972968652414535100474
    82166370484403199890008895243450658541227588666881
    16427171479924442928230863465674813919123162824586
    17866458359124566529476545682848912883142607690042
    24219022671055626321111109370544217506941658960408
    07198403850962455444362981230987879927244284909188
    84580156166097919133875499200524063689912560717606
    05886116467109405077541002256983155200055935729725
    71636269561882670428252483600823257530420752963450
    """
     
     
    def main():
        s = time.time()
     
        tab = []
        tab_rep = []
     
     
        for c in string:
            tab.append(int(c))
     
     
        i = 0
        while i <= len(tab)-5:
            prod = (tab[i] * tab[i+1] * tab[i+2] * tab[i+3] * tab[i+4])
            tab_rep.append(prod)
            i += 1
     
        print max(tab_rep)
     
     
        e = time.time()-s
        print "\nRésultat fourni en %f secondes." % (e)
        return 0
     
    if __name__ == '__main__': main()

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Une piste : Ta chaîne de caractères n'est pas composé que de chiffres.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  3. #3
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Par contre, quitte à faire du python, essayes de penser "pythonien"

    Ton problème se résout en 2 lignes de code.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Points : 43
    Points
    43
    Par défaut
    Ah, ben oui alors ! Je n'avais pas pensé à vérifié cela.
    Quand j'ai refusionné string dans une chaine de caractère simple quote, cela a fonctionné direct.

    Bon à savoir pour les prochaines fois

    Encore un tout grand merci pour avoir attiré mon attention sur mon erreur.

    Tu me dira si il conviens de supprimer mon code puisque qu'il s'agit d'un exo du project Euler.
    Si c'est nécessaire j'éditerai le sujet pour supprimer le code.

    a+

  5. #5
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je ne connais pas le projet Euler, j'aurais donc du mal à te dire s'il faut le retirer ou pasr

    Par contre, tu as du loupé le post :
    Citation Envoyé par DelphiManiac Voir le message
    Par contre, quitte à faire du python, essayes de penser "pythonien"

    Ton problème se résout en 2 lignes de code.
    En gros, essayes de faire plus simple avec les outils que fourni python.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    Je pense que la version en deux lignes n'est pas forcément la plus simple à comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string = '73167176...'
    print max([reduce(lambda x,y: x*y, z) for z in [[int(y) for y in x] for x in [string[i:i+5] for i in range(0, len(string)-4)]]])

  7. #7
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je la voyais un tout petit peu moins 'pythonienne' !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string = '73167176...'
    print max([int(string[i]) * int(string[i+1]) * int(string[i+2]) * int(string[i+3]) * int(string[i+4]) for i in xrange(len(string)-4)])
    En gros, ne pas oublier la puissance des list comprehension, mais ne pas en abuser non plus

    Ça évite d'avoir des gros pavés de code, avec des listes intermédiaires et c'est tout autant lisible quand on s'est habitué à python.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Points : 43
    Points
    43
    Par défaut
    Très impressionnant !

    J'essaierai de trouver une version plus "Python" pour mes futurs réponses

    Pour le projet Euler, c'est ici : http://projecteuler.net/
    Quand on a trouvé une réponse au problème, on a accès à un forum ou l'on peut voir le code (dans les différends langages) des participants.

    Il y a un participant qui utilises Python comme vous et je suis toujours très impressionné !!

    Car il faut trouver l'algo qui fonctionne et, surtout, l'optimiser pour que la résolution
    du calcul se fasse sous la minute... et il y arrive dans une concision incroyable !

    C'est une bonne méthode pour apprendre Python

    Encore un grand merci,
    a+

  9. #9
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Dommage que mon niveau en math soit devenu plus que faible et les études sont déjà loin

    Ça m'aurait intéresser pour le coté algorithmique par contre.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    Je ne connaissais pas le Project Euler, je viens de me lancer et j'aime bien. C'est intéressant de résoudre ces petits problèmes.

    J'en suis au problème n°15

    J'ai remarqué jusque là que j'utilise souvent les compréhensions de listes et les générateurs. Mais bon, à chacun sa méthode

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

Discussions similaires

  1. [V8] ValueError: invalid literal for int() with base 10
    Par chagala dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 28/05/2015, 09h27
  2. erreur :invalid types ‘bool[int]’ for array subscript
    Par ferhat.adel dans le forum Débuter
    Réponses: 1
    Dernier message: 10/06/2013, 18h56
  3. test.py : ValueError: invalid literal for int()
    Par black-falco dans le forum Django
    Réponses: 2
    Dernier message: 05/08/2011, 12h11
  4. [Débutant] invalid literal for int() with base 10: '\r'
    Par oodini dans le forum Général Python
    Réponses: 19
    Dernier message: 23/03/2011, 15h25
  5. pb connexion : invalid password for user
    Par lolo16 dans le forum Administration
    Réponses: 8
    Dernier message: 04/08/2005, 13h11

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