Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/12/2012, 15h13   #1
beefjoy
Invité de passage
 
Homme alban
Inscription : décembre 2012
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme alban
Localisation : France, Haute Marne (Champagne Ardenne)

Informations forums :
Inscription : décembre 2012
Messages : 6
Points : 0
Points : 0
Par défaut extraire des mots d'une phrase

Bonjour à tous,

je suis en train d'apprendre python et je suis bloqué par un exercice trouvé dans:
Apprendre à programmer avec Python 3 de Gérard Swinnen.

exercice 7.13
Définissez une fonction compteMots(ph) qui renvoie le nombre de mots contenus
dans la phrase ph. On considère comme mots les ensembles de caractères inclus entre
des espaces.

J'ai commencé d'écrire un truc du genre:
ch, new_ch = "zorglub", ""
tt = [] # liste vide
i = 0
chain = input("Enter a sentence: ")
while i < len(chain):
if ch != " ": # J'AI L'IMPRESSION QUE MON PB VIENT DE LA !!!
new_ch = new_ch + chain[i]
i += 1
tt.append(new_ch)

print(tt)

tt: ['e', 'ex', 'exa', 'exam', 'examp', 'exampl', 'example', 'example ', 'example d', 'example de', 'example de ', 'example de p', 'example de ph', 'example de phr', 'example de phra', 'example de phras', 'example de phrase']

Je n'arrive pas à définir comment arrêter le script à chaque espace !

Merci d'avance pour votre aide.
beefjoy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 16h07   #2
chticricri
Membre habitué
 
Homme Christian Havard
Développeur informatique
Inscription : mai 2011
Messages : 103
Détails du profil
Informations personnelles :
Nom : Homme Christian Havard
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : mai 2011
Messages : 103
Points : 147
Points : 147
Bonjour,

Un conseil, place toujours ton code à l'intérieur des balises prévues
à cet effet (le bouton ressemble) à #

Cela étant, ton problème se résume à éclater la chaîne de caractère
en fonction en liste de mots et à utiliser la méthode len sur ladite liste.

Dans votre code ch reste constant (zorglub) donc cele ne saurait marcher.
Il faudrait au minimum y affecter chain[i].

De plus la détection d'un espace est une condition de rupture partielle mais non
d'arrêt du script. Autrement dit, chaque fois que tu en détecte un tu dois ajouter ton mot courant à la liste en cours et puis le réinitialiser.

Un autre conseil, au lieu de taper ton code directement, écrit ce qu'il doit faire, étape par étape, sur une feuille de papier (ou un éditeur de texte).
Comme ça, tu te concentre d'abord sur ta logique, indépendamment de tout langage de programmation.

Bon courage
chticricri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 09h49   #3
Captain'Flam
Membre habitué
 
Avatar de Captain'Flam
 
anciennement "sopsag"
Inscription : février 2011
Messages : 120
Détails du profil
Informations personnelles :
Nom : anciennement "sopsag"

Informations forums :
Inscription : février 2011
Messages : 120
Points : 138
Points : 138
Tu codes en python mec !
et pas en basic...

Alors les trucs du genre
Code :
1
2
3
4
i = 0
while i < len( text ):
  fait_un_truc_avec( text[i] )
  i += 1
tu oublies !
En python, c'est la fête !
Code :
1
2
for c in text :
  fait_un_truc_avec( c )
Par ailleurs, pour ton problème, regarde un peu ici !
Et garde l'URL sous le coude : que l'on commence python ou que l'on baigne dedans depuis des années, on y revient toujours...
__________________
Captain'Flam
anciennement Sopsag, aka Hadrien
Win seven 64 / Visual 2010 / Python 2.7 / Eclipse
Captain'Flam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 10h32   #4
chticricri
Membre habitué
 
Homme Christian Havard
Développeur informatique
Inscription : mai 2011
Messages : 103
Détails du profil
Informations personnelles :
Nom : Homme Christian Havard
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : mai 2011
Messages : 103
Points : 147
Points : 147
Bonjour et bien vu, Captain'Flam !

J'ai quand même l'impression que le but de l'exercice est de faire utiliser boucles et tests à l'étudiant afin de résoudre un petit problème très courant. Ce n'est qu'après qu'il découvrira que python dispose de méthodes toutes faites. Cela étant, je préfère aussi la boucle for au while dans ce cas-ci. Le while présente un risque potentiel de boucle infinie.
chticricri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 11h09   #5
beefjoy
Invité de passage
 
Homme alban
Inscription : décembre 2012
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme alban
Localisation : France, Haute Marne (Champagne Ardenne)

Informations forums :
Inscription : décembre 2012
Messages : 6
Points : 0
Points : 0
merci de vos réponses !
Captain'Flam: je vais regarder ton lien attentivement, il y a pleins de méthodes utiles. Au fait je n'ai jamais programmé avant .... ni en basic ni en rien d'ailleurs ! c'est la première fois que je mets les mains dans le cambouis !!

Je suis du même avis que chticricri, je crois que le but de l'exercice est de se familiariser avec les boucles et les conditions donc je vais quand même essayer de coller à cet esprit.
beefjoy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h40.


 
 
 
 
Partenaires

Hébergement Web