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 :

Liste de listes, denombrements d'occurence de sequence dans un string, methode .append et + [Python 3.X]


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut Liste de listes, denombrements d'occurence de sequence dans un string, methode .append et +
    Hello, world!

    voici un exercice simple qui consiste a trouver des occurrence de sous string dans un string.
    par exemple "sse" dans "assessement" ou "an" dans "trans-panamian banana"
    Pour le premier mon programme marche, pour le deuxième non.
    Question subsidiaire: J' ai voulu mettre des petites listes dans une grande en utilisant .append ou + et ca ne marche pas, donc quelque chose m'echappe.
    Quelqu'un voudrait-il bien m'aider?
    Ah, j'allais oublier le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    """
    Cet exercice consiste a denombrer les occurences d'un certain
    segment de chaine dans une chaine
    """
     
     
     
    # On introduit les deux variables de chaine
    needle = input("segment = ")
    haystack = input("chaine = ")
    # On nomme leurs longueurs respectives.
    l = len(needle)
    h = len(haystack)
    # On transformes les variables en listes.
    nou = list(needle)
    haye = list(haystack)
    print("La liste mineure est: ", nou)
    print("La liste majeure est: ", haye)
    # on initialise la liste des listes candidats.
    nouvelle = []
    total = 0
    for item in haye[0: h - l]:
        p = haye.index(item)
     
        candidat = haye[p: p + l]
        print("candidat = ", candidat)
        nouvelle
        if candidat == nou:
            # on ajoute a la liste nommee nouvelle un element, lui
            # meme etant une sous-liste, nomme candidat
            nouvelle = nouvelle + (candidat)
            print (nouvelle)
            total += 1
        print (total)
    Merci a l'avance aux chevronnes.
    Cet exercice vient de "Computer science circles" chapitre 8, deuxieme exercice.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print("sse" in "assessement")
    print("an" in "trans-panamian banana")
    Bonne soirée
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut @fred1599
    Quelle rapidite!
    merci pour ta reponse qui donne True True, mais la reponse attendue est "2" dans le premier cas et"6" dans le second.
    As-tu une possibilite de voir comment s'y prendre?

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    2 et 5 plutôt, je comprend mieux le problème maintenant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print("assessement".count("sse"))
    print("trans-panamian banana".count("an"))
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut
    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
    Coding Exercise: Substring Counting
    As mentioned in lesson 7A, a substring is any consecutive sequence of characters inside another string. The same substring may occur several times inside the same string: for example "assesses" has the substring "sses" 2 times, and "trans-Panamanian banana" has the substring "an" 6 times. Write a program that takes two lines of input, we call the first needle and the second haystack. Print the number of times that needle occurs as a substring of haystack. Hint
     
    1
     
    # On introduit les deux variables
     
    2
     
    needle = input()
     
    3
     
    haystack = input()
     
    4
     
    # On nomme leurs longueurs respectives.
     
    5
     
    print(haystack.count(needle))
     
    6
     
     
     
     
    Did not pass tests. Please check details below and try again.
    Results for test case 1 out of 5
    Input:
     
    sses
    assesses
     
    Program executed without crashing.
    Program output:
     
    1
     
    Expected this correct output:
     
    2
     
    Result of grading: Your output is not correct.
    </>
     
    In the following question, once you get it correct we'll show you a graphical representation of the output using * graphics.
    Je veux dire par la que ca ne marche pas, quel mys(t)ere!

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Oui sauf que vous avez été dans l'incapacité de recopier correctement l'exemple de votre énoncé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print("assessement".count("sse"))
    print("trans-Panamanian banana".count("an"))
    Bonne soirée
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut @fred1599
    Ce qu'il est demande de faire c'est de laisser sous forme d'input et c'est ledit grader ou je ne sais plus qui teste pour plusieurs valeurs. Donc le programme ne peut pas contenir des "sse" ou strings outputes a l'avance.
    Donc j'ai essaye d’écrire la méthode count en remplaçant les strings par les noms des variables.

    Peut-être ne vous ais-je pas compris.
    Pourriez-vous être plus détaillé?
    Il y a quelque chose qui m'a échappé.

  8. #8
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut Ah!!!
    Vous voulez parler de Panamanian au lieu de Panamian/
    Tres juste je vous presente mes excuses.
    Cependant il me reste a apprendre la bonne application de la methode count dans le cas de variables de strings.

  9. #9
    En attente de confirmation mail
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut HELP creation fonction
    Bonsoir,
    Voila je suis étudiant qui découvre Python, je dois créer une fonction qui pour une chaine et un lexique donné renvoie un anagramme de la chaine si elle fait partie du lexique
    Malheureusement je n'y arrive pas du tout
    Pouvez vous m'aider svp

  10. #10
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par zouille8 Voir le message
    Bonsoir,
    Voila je suis étudiant qui découvre Python, je dois créer une fonction qui pour une chaine et un lexique donné renvoie un anagramme de la chaine si elle fait partie du lexique
    Malheureusement je n'y arrive pas du tout
    Pouvez vous m'aider svp
    2 remarques :
    - créez un nouveau fil,
    - postez un peu de code (entre balises) pour montrer ce que vous avez fait
    Pas d'aide par mp.

  11. #11
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut question de methode
    Ma question est pourquoi ça ne marche pas quand je mets des variables dans la méthode "count"

  12. #12
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Ma question est pourquoi ça ne marche pas quand je mets des variables dans la méthode "count"
    Il n'y a pas de soucis à faire cela, mais sans le code d'essai difficile de dire où tu fais l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var = "sse"
    print("assessement".count(var))
    doit être fonctionnel...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  13. #13
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut Hic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    needle = "sess"
    haystack = "assesses"
    # On nomme leurs longueurs respectives.
    print(haystack.count(needle))
    RESULTAT:
    >>> ================================ RESTART ================================
    >>>
    1
    >>>

    PROBLEME: C'EST FAUX!

  14. #14
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Non c'est juste, ou alors le problème est mal exprimé, mais je n'en vois qu'un seul moi aussi
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  15. #15
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut Un exemple concret ou ca ne marche pas
    sses
    AssesSES
    ASSEssesS


    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    needle = "sses"
    haystack = "assesses"
     
    print(haystack.count(needle))
    nous donne:
    >>> ================================ RESTART ================================
    >>>
    1
    >>>


    de meme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    needle = "sses"
    haystack = "asses"
     
    print(haystack.count(needle))

    et de meme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    needle = "sses"
    haystack = "sses"
     
    print(haystack.count(needle))

    Ce n'est pas que je veux ne pas comprendre mais il y a clairement un truc qui m'echappe.

  16. #16
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Eh bien commence par donner les bons exemples, étant donné que ton message 13 donne un exemple différent de ton message 15.

    Et effectivement dans ce dernier exemple, cela n'est pas fonctionnel, depuis le départ tout tes exemples permettaient de vérifier la validité de la méthode count, en développement il faut être précis dans l'expression du problème posé.

    Il faudra donc bien créer un petit algorithme permettant de comptabiliser le nombre de sous chaînes existantes.

    EDIT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
     
     
    print(occurrences("AssesSES".lower(), "sses"))
    Source

    stackoverflow
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  17. #17
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut OK
    Je vais essayer de chercher comment cette methode procede.
    Je pense qu'elle utilise un genre de .remove pour enlever les sous-strings deja comptes et dans ce cas on comprendrait l'erreur. Cae il y a des lettres qui sont utilisees par pluisieurs sous strings. Par exemple le dernier s du sses est le premier du sses suivant dans assesses.
    Donc si la methode count raye la premiere occurrence de sses comme ca assesses, il ne reste plus de quoi compter une nouvelle occurrence.

    J'espere ne pas te facher par mon insistance et mes erreurs trop humaines.
    C'est quand-meme un pas dans la decouverte des entrailles de la methode .count


    Ah je viens de voir apparaitre ton script.

  18. #18
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par sirelion Voir le message
    sses
    AssesSES
    ASSEssesS


    .
    extrait de la python standart library:


    str.count(sub[, start[, end]])

    Return the number of non-overlapping occurrences of substring sub in the range [start, end]. Optional arguments start and end are interpreted as in slice notation.

    Ah il faut bien lire chaque mot. Cette fois-ci peut-etre que je m'en souviendrai.

  19. #19
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Ton problème est-il résolu ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  20. #20
    Membre à l'essai
    Homme Profil pro
    aquaboniste
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : aquaboniste

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 10
    Points
    10
    Par défaut @fred1599
    Tu veux que je mettes résolu ou solved.
    Une minuuuuuuuuuuuuute.
    j'apprends la méthode find, pour comprendre ton code
    j'apprends ici, il y a a peu près le même code.
    http://openbookproject.net/thinkcs/p...e/strings.html

    Des que j'aurais compris ton code je mettrai "Résolu"
    D' ailleurs j'ai encore deux discussions en chantier que je n'ai pas fini de potasser.

    En passant il y a un monsieur qui a fait ce code qui est aussi tres bien en remplacant la boucle while par la methode sum et en faisant l'addition des valeurs de verite. C'est aussi plein de nouveautes que j'apprends doucement.
    regarde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def count(haystack, needle):
    return sum(haystack[n:].startswith(needle)
    for n in range(len(haystack) - len(needle) + 1))
    print(count('assessement', 'as'))
    # -> 1
    print(count('assessement', 'sse'))
    # -> 2
    print(count('trans panamanian bananas', 'an')
    # ->

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Toutes versions] Trouver dans une liste de nombre la première occurence libre
    Par possible924 dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/09/2014, 14h02
  2. Regrouper une liste en liste de listes
    Par West01 dans le forum Prolog
    Réponses: 12
    Dernier message: 14/03/2008, 14h07
  3. Liste de listes
    Par SteelBox dans le forum Prolog
    Réponses: 5
    Dernier message: 16/10/2005, 16h21
  4. acceder au n iéme element d'une liste std::list
    Par sorari dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/03/2005, 15h21
  5. [langage] tri avancé, liste de listes
    Par schnecke dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2004, 14h00

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