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 :

Chaîne de caractères


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Chaîne de caractères
    Bonjour,

    Alors voilà, je débute à peine en programmation (Python) et je galère déjà (mais comment vous faites people ? )

    Bref pour l'instant je bloque sur comment déterminer si une chaîne contient ou non un caractère (exemple i) ? et en combien de fois il y est ? Si une âme patiente pourrait m'expliquer en détail ce serait sympas. J'ai déjà trouvé quelques explications sur internet mais ça m'a pas aidé.

    Merci.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    in permet de connaître la présence d'un objet dans un groupe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Python 2.6.5 (r265:79063, Oct  1 2012, 22:07:21) 
    [GCC 4.4.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> a = 'sapristi'
    >>> 'i' in a
    True
    >>> l = ['e', 'j', 'm']
    >>> 'z' in l
    False
    >>> 'j' in l
    True
    Et pour obtenir le nombre d'objets inclus tu as count():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    >>> a.count('i')
    2
    >>> a.count('s')
    2
    >>> a.count('k')
    0
    >>> l.count('e')
    1
    >>> etc...

    Edit: un bouquin pour débuter: http://python.developpez.com/cours/apprendre-python3/

  3. #3
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    Le mieux, c’est de se référer à la doc officielle

    Une str fait partie des types “conteneurs”, comme les listes, dictionnaires, tuples, etc. Pour savoir si un élément se trouve dans un conteneur, on utilise le mot clé in*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if '?' in "This is a question?":
        print("There is a '?'")
    Pour compter un élément (dans une chaîne, une liste, un tuple…), il y a la méthode count()*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("There is {} 'i'".format("This is a question?".count('i')))
    Encore une fois, utilisez la bible qu’est la référence python, elle décrit tous les modules et objets de base du langage…

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Je pense que tu as plus un problème d’algorithmie que de python. Il faut parcourir la chaine caractère par caractère et comparer au caractère que tu veux compter. S'il y a égalité, tu incrémentes un compteur. Python est un très bon choix, tout est quasiment déjà fait avant que tu ne commences à coder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    chaine = "Ceci est une chaine"
    compteur = 0
    for car in chaine:
        if car == 'i':
            compteur = compteur + 1
    print compteur
    Pour savoir si un caractère est dans une chaine, il suffit d'utiliser le mot clef in

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if "i" in "Ceci est une chaine":
        print "i est dans la chaine"
    else:
        print "i n'est pas dans la chaine"
    Comment il est fondamental d'écrire du code réutilisable, les lignes de code que l'on peut réutiliser sont regroupées sous forme de fonctions avec des paramètres en entrée (ici la chaine a parcourir et le caractère à compter) et un résultat en sortie (ici le nombre d'occurrences du caractère). Le résultat du comptage te dit aussi si le caractère est dans la chaine en étant différent de zéro.

    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
    def compteCaractere(text, caractere):
        compteur = 0
        for car in text:
            if car == caractere:
                compteur = compteur + 1
        return compteur
     
    compte = compteCaractere("Ceci est une chaine", "z")
     
    if compte == 0:
        print "le caractere n'est pas dans la chaine"
    else:
        print "le caractere apparait",
        print compte,
        print "fois"
    A+

    Pfeuh

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Merci pour vos réponses.

    Alors je comprends mieux avec la technique "in"

    c'est étrange j'avais pas eu affaire à ce "in" auparavant, ça ressemblait plus à ce que pfeuh explique, parcourir la chaîne caractère par caractère mais avec un While à la place de for et un input au début (Ah oui le input aussi, j'ai pas compris son rôle celui là)

    C'est une autre méthode ? ou bien ai-je mal compris ?
    Est-ce que ça tient la route ce que je raconte ou pas ?

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par Léannie Voir le message
    C'est une autre méthode ?
    Oui.
    ou bien ai-je mal compris ?
    Oui.
    Est-ce que ça tient la route ce que je raconte ou pas ?
    Non.

    En fait while et for .. in .. permettent d'executer un processus en boucle tandis que input te permet de saisir une entrée utilisateur (au clavier bien souvent).

    Il n'est pas impossible que tu aies rencontré input dans une boucle while cependant.

  7. #7
    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
    En python l'avantage est le nombre de fonctions optimisées pour une tâche particulière. Si ce n'est pas un devoir scolaire, Le module collections et sa fonction Counter est faite pour ton cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> from collections import Counter
    >>> ch = "ceci est une chaine"
    >>> compteur = Counter(ch)['e']
    >>> compteur
    4
    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)

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui sauf qu'en cours on a pas vu cette méthode donc pour l'instant j'ai besoin d'apprendre la méthode citée au dessus pour suivre le besoin du cours.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  3. Chaînes de caractères
    Par Zazeglu dans le forum C
    Réponses: 3
    Dernier message: 28/08/2003, 16h20
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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