Partage
  • Partager sur Facebook
  • Partager sur Twitter

[python] boucle et tests

pourtant ça devrait être simple :(

Sujet résolu
    30 novembre 2005 à 19:51:07

    Lu à tous

    voila je me lance dans python j'ai vite appris la syntaxe de base mais dès que j'ai voulu mettre en application *crack*
    Ici c'est pour chercher si une chaine de caractère contient un "e" ou non, mais le programe bug (la fenetre dos se ferme aussitot malgré le raw_input)


    #détermine si ya un e dans la chaine
    chaine = "le seigneur des anneaux"

    i=0
    elem = 0
    while (i<=len(chaine)):
           if (chaine[i] == 'e'):
               elem = 1
           i=i+1 #on incremente pour parcourir le chaine
           
    #affichage
    if (elem == 1):
        print "ya un e"
    else:
        print "yen a pas"

    raw_input("Appuyer sur une touche pour quitter le programme")
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      30 novembre 2005 à 20:10:27

      a) Premièrement, tu disposes de l'instruction 'in' pour savoir si 'e' est dans chaine :
      Ainsi
      'e' in chaine -> true

      Mais je pense que tu le savais et que tu souhaitais faire sans, ou que tu le savais pas et dans ce cas c'est quand même bien d'apprendre à s'en passer (ça entraîne)

      b) Une boucle for...in aurait été plus appropriée, mais là encore peut-être que tu connais pas

      c) On en arrive au while. Ta condition est mauvaise : len(chaine) va te renvoyer 23, donc ta condition signifie "Tant que i est inférieur ou égal à 23".

      Or tu vas essayer à un moment (la dernière boucle, à vrai dire) de faire chaine[23], lorsque i aura atteint cette valeur, ce qui devrai normalement afficher le 23 caractère de la chaîne... + 1, car l'index commence à zéro ! Compris ?

      Et :

      >>> chaine[23]

      Traceback (most recent call last):
      File "<pyshell#29>", line 1, in -toplevel-
      chaine[23]
      IndexError: string index out of range

      Revoie la condition de façon a ce que i n'atteigne pas un index trop grand. C'est facile y'a un "=" à enlever ;)
      • Partager sur Facebook
      • Partager sur Twitter
        30 novembre 2005 à 20:20:38

        d'accord merci ça marche maintenant :)

        je ne connais pas encore le in mais de toute façon le but était de tester un peu les chaines de caractères ^^
        maintenant je vais essayer avec for :p

        Merci encore
        +
        Binabik
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          30 novembre 2005 à 20:31:50

          J'ai oublié le d) : tu peux faire un "break" pour sortir de la boucle une fois que tu as trouvé un "e".
          • Partager sur Facebook
          • Partager sur Twitter

          [python] boucle et tests

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown