3
Chaînes sens dessus
dessous
But
Dans ce projet 3, nous voudrions que l’utilisateur entre une phrase et que notre
programme inverse les mots de la phrase pour l’inscrire à l’écran.
Principe
Le principe est assez simple: nous devons récupérer une phrase entrée par l’utilisateur,
puis récupérer tous les mots qu’elle contient et les enregistrer un à un dans une liste, par
exemple, que nous acherons ensuite à l’envers.
Besoins
Pour résoudre ce projet, nous pouvons nous contenter de ce que nous avons appris dans
les deux projets précédents. Dans ce cas, nous écrirons du Python comme nous écririons
en C ou tout autre langage sans prendre en compte les spécificités du langage.
Attardons-nous quand même sur cette première approche du programme.
Solution 1
#!/usr/local/bin/python3
#--*--coding:utf8--*--
phrase=input("Entrez votre phrase\n")
l=[]
mot=''
for car in phrase:
if car!=" ":
2611book.indb 31 26/10/13 08:15
© 2013 Pearson France – Apprendre Python 3 – Franck Ebel
32 Chapitre 3
mot=mot+car
else:
l.append(mot)
mot=''
l.append(mot)
mt=len(l)-1
while mt>-1:
print(l[mt],end=' ')
mt=mt-1
print(' ')
Dans cette solution, nous allons parcourir la phrase lettre par lettre grâce à une boucle
for … in et nous allons reconstruire chaque mot que nous allons placer dans une liste,
liste vide que nous aurons déclarée avant la boucle.
Nous ajoutons chaque mot ainsi recomposé dans la liste grâce à l.append().
Une fois la boucle for … in, terminée, nous recréons une boucle while en prenant
en compte la longueur de la liste, donc le nombre de mots. Et nous achons ces mots
en partant du dernier pour revenir vers le premier. La phrase est donc inscrite à l’envers.
Mais le but ici n’est pas d’écrire du Python comme nous écririons du C, mais d’utiliser toutes
les astuces de ce langage. Pour cela, nous avons besoins d’acquérir d’autres connaissances.
Connaissances à acquérir
Manipulation de chaînes de caracres
Aectation de chaînes
Nous avons déjà aecté des chaînes de caractères à une variable sans nous en rendre
compte.
Par exemple, dans la solution 1, nous demandons à l’utilisateur d’entrer une chaîne de
caractères que nous aectons à la variable phrase: phrase=input("Entrez votre phrase\n").
Pour aecter une chaîne de caractères à une variable, nous pouvons donc procéder ainsi:
var="mon eformation python" (la variable var reçoit la valeur "mon eformation
python").
La phrase peut comporter une apostrophe qui sera encadrée par des guillemets doubles.
var="qu'elle heure est il ?"
Nous pouvons de même inclure des doubles quotes : il faudra pour cela utiliser des
simples quotes pour encadrer:
var='Un "test"'
Nous pouvons aussi utiliser le caractère d’échappement \ pour protéger l’apostrophe:
var='C\'est pas "faux" comme dirait Perceval'
Si nous déclarons une variable var='123', la variable var reçoit une chaîne de trois
chires.
Le première utilisation d’une variable doit être une assignation, qui peut se faire de
plusieurs manières: var="", for i in "WOLVERINE" par exemple.
2611book.indb 32 26/10/13 08:15
© 2013 Pearson France – Apprendre Python 3 – Franck Ebel
Chaînes sens dessus dessous 33
Opérations sur les chaînes
Deux symboles vont nous être utiles et indispensables: les signes = et +.
= assigne une valeur à une variable: var1='Python'.
+ prolonge une chaîne par une autre chaîne (concaténation).
Il est possible d’eectuer une permutations des valeurs de variables, qui peuvent être de
types diérents (numériques, chaînes, listes…): var1, var2, var3=var2, var3, var1.
Figure3.1
Aectation de variables.
Nous pouvons aussi multiplier une chaîne par un nombre:
var='toc '
print(var*3)
Nous pouvons de plus récupérer le caractère que nous souhaitons dans la chaîne de
caractères. Par exemple, var[4] désigne le cinquième caractère de la chaîne.
Nous pouvons sélectionner une sous-chaîne à partir de la position de début jusqu’à la
position de fin non comprise.
var=var[début:n]
chaine[m:n:i] renvoie une chaîne composée du caractère m, puis tous les i caractères
jusqu’au caractère n-1 chaine[0:] équivaut à la chaîne elle-même.
Figure3.2
Manipulation de chaînes. Nous avons d’autres possibilités
souvent très utiles qui vont nous permettre d’éclater une
chaîne et de la reformer.
Pour assembler dans une chaîne les éléments d’une liste séparés par un caractère défini,
nous utiliserons la méthode join.
Dans chaine=" ".join(liste), chaque élément de la liste sera séparé par un espace.
L’inverse, c’est-à-dire la découpe ou l’éclatement d’une chaîne de caractères, utilisera la
méthode split().
liste=chaine.split() découpe une chaîne (à chaque espace) et place les éléments
dans une liste. liste=chaine.split(limite) découpe une chaîne (à chaque
2611book.indb 33 26/10/13 08:15
© 2013 Pearson France – Apprendre Python 3 – Franck Ebel
34 Chapitre 3
limite) et place les éléments dans une liste. liste=chaine.split(limite,n)
découpe une chaîne un nombre limité de fois.
liste=chaine.rsplit(limite,n) découpe une chaîne un nombre limité de fois
à droite.
Figure3.3
Les fonctions pour manipuler les chaînes.
Lors du premier projet, nous avons déjà utilisé format() sans l’expliquer. format(n,'')
retourne une chaîne formatée, valable avec les lettres d, o, x, c, f de print.
Il est aussi possible de prévoir des champs à remplir à travers format(), ou la réutilisation
d’un même mot ou expression.
format() peut aussi être utilisé pour convertir des nombres dans les bases octale,
hexadécimale, binaire ou décimale (voir Figure3.4).
Figure3.4
format().
Comparaison de caractères et chaînes
Nous avons la possibilité d’eectuer des opérations de chaînes.
max(chaine) renvoie le caractère dont le code numérique est le plus élevé.
min(chaine) renvoie le caractère dont le code numérique est le moins élevé.
max(ch1,ch2) renvoie la chaîne qui se classe alphabétiquement après l’autre.
min(ch1,ch2) renvoie la chaîne qui se classe alphabétiquement avant l’autre.
cmp(ch1,ch2) envoie 0 si les chaînes sont égales, –1 si la première se classe avant
l’autre, 1 si la première se classe après l’autre.
x in y retourne True si la chaîne x est incluse d’un seul tenant dans y.
2611book.indb 34 26/10/13 08:15
© 2013 Pearson France – Apprendre Python 3 – Franck Ebel
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !