Les chaînes de caractères sont un type de données composite constitué exclusivement de caractères. Elles ne sont pas modifiables : il faut créer une nouvelle chaîne, et y recopier ce que l'on souhaite changer.
On les définit avec des apostrophes, ou des guillemets : 'aze' et "sqd" sont deux chaînes de caractères.
>>> chaine = "Coucou" >>> chaine 'Coucou' >>> type(chaine) <type 'str'>
On lit une chaîne de caractères avec raw_input(), en passant éventuellement le message à afficher en argument. On affiche le résultat avec print() :
>>> chaine = input() Coucou >>> print(chaine) Coucou >>> dd = 'CouCou' >>> 'ou' in dd True >>> chaine2 = input("Votre chaîne : ") Votre chaîne : Coucou2 >>> print(chaine2) Coucou2
On peut tout à fait placer un \n dans une chaîne de caractères, auquel cas on aura le saut de ligne attendu.
Si toto est une chaîne de caractères, toto[i] est le caractère i+1 de cette chaîne, et len(toto) sa longueur. Enfin, on peut concaténer deux chaînes de caractères avec +, et aussi utiliser * :
>>> toto = 'abcde' >>> len(toto) 5 >>> toto[0] 'a' >>> toto[1] 'b' >>> toto[-1] 'e' >>> toto + 'fg' 'abcdefg' >>> 'fg'*3 'fgfgfg'
On convertit la chaîne s='123' en nombre par int(s) (float, si c’est un réel). Enfin, on transforme le nombre N=123 en chaînes de caractères par str(N)...
>>> s = '123' >>> s, type(s) ('123', <type 'str'>) >>> n = int(s) >>> n, type(n) (123, <type 'int'>) >>> str(n), n ('123', 123)
La boucle for peut parcourir une chaîne de caractères. Par exemple :
>>> for k in 'lettres': ... print(k) ... l e t t r e s
Chaque lettre du mot lettres est affichée, une par ligne.
Dans le même esprit, la condition du if peut porter sur l’appartenance d’un caractère à une chaîne de caractères :
>>> toto = 'aze' >>> if 'a' in toto : ... print(toto) ... aze
Dans ce qui précède, la condition est vérifiée, donc 'aze' est affiché. On peut utiliser not in au lieu de in, si besoin est.
Dans les deux précédentes méthodes, on peut remplacer l par r, pour effectuer les actions non pas à gauche, mais à droite.
Illustrons certaines des méthodes précédentes :
>>> 'abs'.replace('s','c') 'abc' >>> 'qAd'.lstrip('A') 'qAd' >>> 'qAd'.lstrip('qA') 'd'
Illustrons les méthodes précédentes :
>>> 'toto'.endswith('o') True >>> 'azea'.islower() True
Illustrons les méthodes précédentes :
>>> 'aze'.join('xwc') 'xazewazec' >>> 'abs'.find('s') 2 >>> 'q d ez zzz'.split(' ') ['q', 'd', 'ez', 'zzz']
Réalisez le chiffrement/déchiffrement d'une chaîne de caractères, en se basant sur la méthode dite de transposition en dents de scie : pour chiffrer le message
transposition en dents de scie
on l'écrit sur deux lignes, en dents de scie justement :
t a s o i i n n e t d s i r n p s t o e d n s e c e
Ce qui donne, quand on concatène les deux lignes, le chiffré :
tasoiinnetdsirnpstoednsece
On pourra faire deux fonctions : l'une pour le chiffrement, et l'autre pour le déchiffrement.
Faire un code python qui teste si un mot est soit un palindrome, soit une anagramme.
N.B.: manière pythonique de tester si un mot est palindromique
>>> mot == mot[::-1]
et pour les anagrammes :
>>> from collections import Counter >>> print(Counter('elbow') == Counter('below'))