IGI-3008 – ESIEE Paris – 2016-2017
Apprentissage de la Programmation avec Python
TP4
Jean-Claude GEORGES
Retour sur les chaînes de caractères
Fonctions et méthodes
Les chaînes de caractères sont des objets indexés (dont les composants sont numérotés)
non modifiables. Outre les littéraux, on peut créer une chaîne en utilisant sa valeur Unicode
ou son nom (hélas en anglais).
Figure 1— Un extrait des tables Unicode
Figure 2— Les noms Unicode
Exercice 1— Chaînes bizarres
Que contiennent les chaînes suivantes ?
>>> '\u2713'
>>> "Utilisez '\N{MULTIPLICATION SIGN}' ou '\u00d7' pour \
afficher un signe de multiplication"
>>> "\N{WHITE SMILING FACE}"
>>> '\u0627\u0628\u0648\u062c\u0639\u0641\u0631\u0020\u0645\u062d\u0645\
\u062f\u0020\u0628\u0646\u0020\u0645\u0648\u0633\u06cc\u0020\u062e\u0648\
\u0627\u0631\u0632\u0645\u06cc'
Les listes des caractères Unicode et de leurs noms associés est disponible à l’adresse
Ihttp://www.unicode.org/charts/
(attention, toutes les machines ne disposent pas de
tous les caractères)
FONCTIONS ET MÉTHODES 2
L’indexation
s[i]
permet d’extraire un caractère unique de la chaîne. La découpe (slicing)
s[d:f:p]
permet de créer une nouvelle chaîne construite à partir de la chaîne de départ.
Les numérotations se font comme indiqué Fig. 3.
Figure 3— Indexation et slicing
Exercice 2— Indexation et slicing
Avec >>> s = "0123456789", que donneront les commandes suivantes ?
>>> s[3] >>> s[-1]
>>> s[0] >>> s[-3]
>>> s[40] >>> s[-40]
>>> s[3:8] >>> s[8:3]
>>> s[:8] >>> s[3:]
>>> s[:] >>> s[-8:-3]
>>> s[:-3] >>> s[-8:]
>>> s[3:8:2] >>> s[:8:3]
>>> s[2::2] >>> s[::2]
>>> s[-3:-8:-2] >>> s[-2::-3]
>>> s[:2:-3] >>> s[::-1]
Figure 4— Pourquoi changement de casse
On parle de casse en imprimerie, car avant les ordinateurs, les
caractères (cassetins) en plomb étaient rangés dans des caisses,
avec en bas les minuscules et en haut les majuscules.
Exercice 3— Changement de casse
Avec
>>> s = "Un EXEMPLE de Chaîne de Caractères"
, que donneront les commandes
suivantes ?
>>> s.lower()
>>> s.upper()
>>> s.capitalize()
>>> s.title()
>>> s.swapcase()
TP4IGI-3008 (2016-2017)
FONCTIONS ET MÉTHODES 3
D’autres opérateurs, fonctions ou méthodes sont utilisables sur les chaînes. Figure 5— Comparaisons lexicographiques
On remarque que les comparaisons sur les chaînes ne sont pas
lexicographiques (ordre du dictionnaire). Elles suivent l’ordre
Unicode. Le programme Python équivalent à la comparaison
<
est le suivant :
def inferieur(s1, s2) :
i=0
while i < len(s1) and i < len(s2) :
if ord(s1[i]) == ord(s2[i]) : # si c1 == c2 (en Unicode)
i += 1 # on passe au suivant
continue
else :# si c1 != c2 ()en Unicode)
return ord(s1[i]) < ord(s2[i]) # c1 < c2
else :# si s1 ou s2 est terminé
return len(s1)<len(s2) # s1 doit être plus court que s2
Pour les règles de l’ordre lexicographique en français et
leur programmation, voir
Ihttp://www-clips.imag.fr/geta/
gilles.serasset/tri-du-francais.html
Exercice 4— Tests
Avec
s = "Monsieur Jack, vous dactylographiez bien mieux que votre ami Wolf"
,
que donneront les commandes suivantes ?
>>> "Jack" in s
>>> "Jacky" in s
>>> "" in s
>>> s.startswith("monsieur")
>>> s.endswith("olf")
>>> "Python" == "Python"
>>> "Python" <"Python.3"
>>> "Python.2" <"Python.3"
>>> "Python" == "python"
>>> "Python" <= "python"
>>> "Zorro" <"cavalier"
>>> "a" <"b"
>>> "à" <"b"
>>> "a123".isalnum() ;"a12 3".isalnum()
>>> "Python".isalpha() ;"Pyth0n".isalpha()
>>> "123".isdigit() ;"12.3".isdigit() ;"-12".isdigit()
>>> "A2".isidentifier() ;"2A".isidentifier() ;
>>> "arrière-grand-mère".islower() ;"Blanche-Neige et les 7 nains".islower()
>>> "VOL 714 POUR SIDNEY".isupper() ;"VOL 714 POUR SlDNEY".isupper()
>>> " ".isprintable() ;"tabulation \t".isprintable()
>>> "\n\t ".isspace()
TP4IGI-3008 (2016-2017)
FONCTIONS ET MÉTHODES 4
Exercice 5— Suppression/ajout/remplacement
Que donneront les commandes suivantes ?
>>> "12".zfill(5)
>>> "\t\n suppression des espaces à gauche ".lstrip()
>>> " suppression des espaces à droite \t\n ".rstrip()
>>> " suppression des espaces à droite et à gauche \t\n ".strip()
>>> s = "Monsieur Jack, vous dactylographiez bien mieux que votre ami Wolf"
>>> t = s.replace('ami','copain')
>>> print(s)
>>> print(t)
Figure 6— Pangrammes
Un pangramme contient toutes les lettres de l’alphabet. Deux
exemples classiques :
Portez ce vieux whisky au juge blond qui fume
The quick brown fox jumps over the lazy dog.
Plus fort encore, ce pangramme de Gilles Esposito-Farèse, qui
contient toutes les lettres accentuées et ligatures du français :
Dès Noël où un zéphyr haï me vêt de glaçons würmiens, je dîne d’exquis
rôtis de bœuf au kir à l’aÿ d’âge mûr et cætera !
Exercice 6— Comptage et recherche
Avec
s = "Monsieur Jack, vous dactylographiez bien mieux que votre ami Wolf"
,
que donneront les commandes suivantes ?
len(s) ; s.count('e') ; s.count('ie')
s.find('i') ; s.find('i',40) ; s.find('i',20,30) ; s.rfind('i')
s.index('i') ; s.index('i',40) ; s.index('i',20,30) ;s.rindex('i')
Écrivez un programme qui vérifie que toutes les lettres de l’alphabet sont contenues
dans une chaîne
s
(qui vérifie que
s
est un pangramme, voir Fig. 6). On se limitera aux
chaînes en minuscules et sans accent.
TP4IGI-3008 (2016-2017)
FONCTIONS ET MÉTHODES 5
Exercice 7— Partitions
Que donneront les commandes suivantes ?
>>> "Une chaîne à découper".partition('à')
>>> "Une chaîne à découper".partition('et')
>>> "Une chaîne à découper".partition(' ')
>>> "Une chaîne à découper".split(' ')
>>> "Une chaîne à découper".split(' ',2)
>>> "Une chaîne à découper".split('e')
>>> """Un texte
sur
plusieurs
lignes""".splitlines()
>>> mots = " Une chaîne à découper en mots ".split()
>>> mots
>>> ' '.join(mots)
Figure 7— L’aide pour la méthode partition
>>> help(str.partition)
Help on method_descriptor :
partition(...)
S.partition(sep) -> (head, sep, tail)
Search for the separator sep in S, and return the part before it,
the separator itself, and the part after it. If the separator is not
found, return S and two empty strings.
Figure 8— L’aide pour la méthode split
>>> help(str.split)
Help on method_descriptor :
split(...)
S.split(sep=None, maxsplit=-1) -> list of strings
Return a list of the words in S, using sep as the
delimiter string. If maxsplit is given, at most maxsplit
splits are done. If sep is not specified or is None, any
whitespace string is a separator and empty strings are
removed from the result.
Figure 9— L’aide pour la méthode join
>>> help(str.join)
Help on method_descriptor :
join(...)
S.join(iterable) -> str
Return a string which is the concatenation of the strings in the
iterable. The separator between elements is S.
TP4IGI-3008 (2016-2017)
1 / 6 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 !