[Python] difficulté compréhension programme
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

[Python] difficulté compréhension programme



  1. #1
    Jereflechis

    [Python] difficulté compréhension programme


    ------

    Bonjour,

    Le but de l'exercice étant de trouver la position d'un mot dans une chaîne de caractère à partir d'une fonction crée par nous même, j'ai la correction mais je ne la comprend pas très bien :

    11 def recherche_mot(mot,chaine):
    12 taille_mot = len(mot)
    13 taille_chaine = len(chaine)
    14 for k in range(taille_chaine-taille_mot+1):
    15 i = 0
    16 while i < taille_mot:
    17 if mot[i] != chaine[k+i]: i = taille_mot
    18 elif i == taille_mot-1: return(k)
    19 else: i = i+1
    20 return("Le mot n’est pas présent")
    21
    22 test(recherche_mot,’ab’,’ ab’)
    23 test(recherche_mot,’là’,"C’est bien ce mot là que nous cherchons !")
    24 test(recherche_mot,’mots’,"C’e st bien ce mot là que nous cherchons !")

    Pouvez vous m'aider à l'interpreter ?

    Merci

    -----

  2. #2
    Pauldair

    Re : [Python] difficulté compréhension programme

    Bonjour,

    Comme "tu réfléchis", nous allons faire l'inverse, tu vas nous interpréter le programme et nous te dirons si c'est correct ou non.

    Code:
    def recherche_mot(mot,chaine):
      taille_mot = len(mot)
      taille_chaine = len(chaine)
      for k in range(taille_chaine-taille_mot+1):
        i = 0
        while i < taille_mot:
          if mot[i] != chaine[k+i]: i = taille_mot
         elif i == taille_mot-1: return(k)
         else: i = i+1
      return("Le mot n’est pas présent")
         
       test(recherche_mot,’ab’,’ ab’)
       test(recherche_mot,’là’,"C’est bien ce mot là que nous cherchons !")
       test(recherche_mot,’mots’,"C’e st bien ce mot là que nous cherchons !")

  3. #3
    Jereflechis

    Re : [Python] difficulté compréhension programme

    D'accord

    Alors tout d'abord le programme récupère la taille du mot dont on veux connaître la position, il récupère aussi la taille de la chaîne dans lequel le mot se trouve ou non. Par la suite une boucle parcourt la taille de la différence de la taille de la chaîne et du mot. Et c'est donc là que je ne comprend pas très bien. Aussi, je n'arrive pas très bien à interpréter ce morceau ci : "if mot[i] != chaine[k+i]". Voilà, je peux difficilement aller plus loin puisque je ne comprend pas l'idée principale de l'algorithme..

    Merci

  4. #4
    Pauldair

    Re : [Python] difficulté compréhension programme

    En Python on considère une chaîne de caractères comme un "array" (un tableau) par exemple:

    Soit la variable mot = "Python" que vaut mot[3] ?

    Ça devrait t'aider à comprendre la suite...

  5. A voir en vidéo sur Futura
  6. #5
    Jereflechis

    Re : [Python] difficulté compréhension programme

    mot[3]=t

    mais ça ne me permet pas de mieux comprendre...

  7. #6
    Jereflechis

    Re : [Python] difficulté compréhension programme

    et c'est le t de python bien entendu

  8. #7
    Pauldair

    Re : [Python] difficulté compréhension programme

    Citation Envoyé par Jereflechis Voir le message
    mot[3]=t
    Non, c'est incorrect, car mot[3] = h en effet dans un "array" le premier élément est mot[0]

    Cela montre que tu n'as pas retenu les bases du langage Python, il conviendrait de relire attentivement ton support de cours. (Alternativement tu peux lire sur openclassrooms.com: Apprenez à programmer en Python et en particulier Les chaînes de caractères.

    Maintenant que tu sais tout ça, explique nous dans un français correct ce que fait l'instruction conditionnelle:

    Code:
    if mot[i] != chaine[k+i]
    Pour t'aider, imagine que chaine = "les sanglots longs des violons de l'automne" et que mot = "violons" et fait sur papier ou dans ta tête ce que fera le programme, suis chaque instruction et écris la valeur de chaque variable à chaque itération.

  9. #8
    Jereflechis

    Re : [Python] difficulté compréhension programme

    je n'y arrive pas justement

  10. #9
    Pauldair

    Re : [Python] difficulté compréhension programme

    Dans le cas cité plus haut:
    - chaine = "les sanglots longs des violons de l'automne" et que mot = "violons"

    Si les variables i et k valent 0 (zéro) que contient mot[ i ] et chaine[ k+i ] ?

    Que signifie mot[ i ] != chaine[ k+i ] ?

  11. #10
    Jereflechis

    Re : [Python] difficulté compréhension programme

    mot[0]=v

    et chaine[0]=l

    v est donc différent de l donc on affecte 5 à i qui est la taille de "violons".

    Mais je ne comprend pas non plus l'utilité de faire cette différence dans cette ligne : for k in range(taille_chaine-taille_mot+1):

    cordialement
    Dernière modification par Jereflechis ; 24/08/2015 à 17h30.

  12. #11
    Pauldair

    Re : [Python] difficulté compréhension programme

    Citation Envoyé par Jereflechis Voir le message
    ...
    Mais je ne comprend pas non plus l'utilité de faire cette différence dans cette ligne : for k in range(taille_chaine-taille_mot+1):
    ...
    Dans le cas exemple, cité plus haut que vaut range(taille_chaine-taille_mot+1) ?

    Un doute me vient à l'esprit, as-tu installé Python sur ton PC ?

    Car le corrigé que tu as donné comporte certaines erreurs. Il devraient s'écrire:

    Code:
    def recherche_mot(mot,chaine):
      taille_mot = len(mot)
      taille_chaine = len(chaine)
      for k in range(taille_chaine-taille_mot+1):
        i = 0
        while i < taille_mot:
          if mot[i] != chaine[k+i]: i = taille_mot
          elif i == taille_mot-1: return(k)
          else: i = i+1
      return("Le mot n’est pas présent")
         
    print(recherche_mot('ab',' ab'))
    print(recherche_mot('là',"C’est bien ce mot là que nous cherchons !"))
    print(recherche_mot('mots',"C’est bien ce mot là que nous cherchons !"))

  13. #12
    Jereflechis

    Re : [Python] difficulté compréhension programme

    range(taille_chaine-taille_mot+1) va jusque 36 mais le programme fonctionne aussi avec range(taille_chaine) donc "-taille+" est inutile si ce n'est que cela permet d'aller un peux plus vite pour le programme.

    J'ai bien installé python mais je n'ai pas mis tous le code c'est pour cela que vôtre version diffère mais le reste est inutile en faite c'était une portion de code test.

    J'ai fais des essais à la main en partant de i=0 et je ne comprend toujours pas comment cela fonctionne
    Dernière modification par Jereflechis ; 25/08/2015 à 10h30.

  14. #13
    Pauldair

    Re : [Python] difficulté compréhension programme

    Citation Envoyé par Jereflechis Voir le message
    range(taille_chaine-taille_mot+1) va jusque 36 mais le programme fonctionne aussi avec range(taille_chaine) donc "-taille+" est inutile si ce n'est que cela permet d'aller un peux plus vite pour le programme.
    Oui c'est de l'optimisation: inutile de continuer à parcourir la chaîne de caractères restante si elle est plus courte que la longueur du mot recherché.

    Avec tout ce que tu as compris jusqu'à maintenant, je ne vois pas ce qui te manque pour comprendre la fonction recherche() de ton exercice...

    En gros on scanne chaque lettre de la phrase en la comparant avec l'initiale du mot recherché, si on tombe sur la même lettre on compare ce qui suit avec le mot recherché.

  15. #14
    Jereflechis

    Re : [Python] difficulté compréhension programme

    C'est bon j'ai compris en traduisant en algorithme standard, je voyais plus facilement les boucles.

    Merci pour vôtre aide

Discussions similaires

  1. Programme en python
    Par Isis-mirka dans le forum Programmation et langages, Algorithmique
    Réponses: 16
    Dernier message: 01/12/2014, 21h29
  2. Besoin d'explication sur un programme en Python 3
    Par THESO dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 03/03/2014, 11h25
  3. Programme python
    Par THESO dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 20/09/2013, 21h52
  4. Programme en Python
    Par invitec13ffb79 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 19/09/2011, 19h14
  5. Execution d'un programme avec python
    Par invite242c100d dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 06/09/2004, 16h47