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 :

probleme de debutant


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut probleme de debutant
    je bloque sur ce code depuis une heure, et python me sort en continu :

    if len(t1[i]) < 6:
    IndexError : index out of range

    il ne me semble pas pourtant que je désigne un élément introuvable !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    t1 = ["Jean", "Maximilien", "Brigitte", "Sonia", "Jean-Pierre", "Sandra"]
    t2 = []
    t3 = []
    i = 0
    v = []
     
    while i <= len(t1):
        if len(t1[i]) < 6:
            t2.append(t1[i])
        else:
            t3.append(t1[i])
        i = i + 1
     
    print t2, t3
    pouvez vous me dire ce qui ne va pas s'il vous plait ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    Salut

    En fait c'est tout simplement que lorqu'il compte les élément il commence à "1", donc la fonction len(t1) = 6

    Par contre les numéros des éléments dans le tableau commencent à "0".
    Et donc tu es numéroté de 1 à 5

    donc en faite tu fais ta boucle une fois de trop

    Si tu rajoute un print dans ton 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
    15
    t1 = ["Jean", "Maximilien", "Brigitte", "Sonia", "Jean-Pierre", "Sandra"]
    t2 = []
    t3 = []
    i = 0
    v = []
     
    while i <= len(t1)-1:
        print "i: ",i
        if len(t1[i]) < 6:
            t2.append(t1[i])
        else:
            t3.append(t1[i])
        i = i + 1
     
    print t2, t3
    on obtient ca:


    0
    1
    2
    3
    4
    5
    6
    IndexError list out of range

    Et donc on s'apercoit qu'il execute la boucle 6 fois (de 0 à 5) et bloque à la 7eme (à 6)



    En gros pour que ca marche tu n'a qu'a enlever le "=" dans ta ligne:


    Comme ca il ne fera pas la boucle une fois de trop...

    Julien

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    merci beaucoooooouuup
    y a encore du bouleau hein !
    merci pour ta réponse rapide

Discussions similaires

  1. [CSS] probleme de debutant
    Par discogarden dans le forum Mise en page CSS
    Réponses: 21
    Dernier message: 21/12/2005, 15h54
  2. Probleme inconnu... [debutant]
    Par The_Zarabe dans le forum C
    Réponses: 8
    Dernier message: 27/10/2005, 19h31
  3. quelques problemes de debutant avec count
    Par shirya dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/09/2005, 22h14
  4. probleme de debutant sous access
    Par guili dans le forum Access
    Réponses: 8
    Dernier message: 23/06/2005, 16h39
  5. Problème pour debuter avec glut
    Par ismael14 dans le forum GLUT
    Réponses: 2
    Dernier message: 26/07/2004, 10h37

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