22. Índexs de la cadena de text¶
Les cadenes de text estan formades per caràcters individuals que es poden obtenir amb els índexs. Un índex de cadena de text és un número dins de dos claudàtors `` [] `` obertura i tancament
>>> lang = 'Python'
>>> lang[0]
'P'
>>> lang[1]
'y'
>>> lang[2]
't'
>>> lang[3]
'h'
El primer personatge "P" té l'índex zero "Lang [0]". Es tracta d’una convenció utilitzada per molts altres llenguatges de programació com el llenguatge CNAASCRIPT. La primera vegada que apreneu no és fàcil d’utilitzar -se, però cal escriure codi correcte.
Els índexs negatius comencen al final de la cadena de text
>>> lang[-1]
'n'
>>> lang[-2]
'o'
>>> lang[-3]
'h'
>>> lang[-4]
't'
Els índexs fora de rang produeixen un error al programa
>>> lang[20]
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
lang[20]
IndexError: string index out of range
Llesques o llesques¶
Els índexs es poden escriure per obtenir diversos caràcters d'una cadena de text, utilitzant els dos punts del personatge ":" Per separar el començament del final en un índex
>>> lang = 'Python'
>>> lang[0:3]
'Pyt'
>>> lang[2:5]
'tho'
>>> lang[1:-2]
'yth'
>>> lang[-3:-2]
'h'
El següent esquema pot ajudar a comprendre millor el funcionament dels índexs i les llesques
| +---+---+---+---+---+---+
| | P | y | t | h | o | n |
| +---+---+---+---+---+---+
| 0 1 2 3 4 5 6
| -6 -5 -4 -3 -2 -1
Un índex agafarà la carta a la vostra dreta.
Una llesca portarà els caràcters entre els dos números. Per exemple, [1: -2] prendrà tots els caràcters entre els índexs 1 i -2 'yth'
| +---+---+---+---+---+---+
| | P | y | t | h | o | n |
| +---+---+---+---+---+---+
| 1 -2
El nombre de les llesques també es pot deixar sense escriure i això equival a dir que agafeu tots els personatges des del principi o porteu tots els personatges fins al final de la cadena
>>> lang[:3]
'Pyt'
>>> lang[3:]
'hon'
>>> lang[:]
'Python'
Les rodanxes amb els índexs de gamma fora no produeixen error, només retornen una cadena buida
>>> lang[20:30]
''
Bucles amb cadenes de text¶
Un `` per '' es pot treure els caràcters d'una cadena de text un per un
>>> for c in 'Hola, mundo':
... print(c)
...
...
H
o
l
a
,
m
u
n
d
o
Exercicis¶
Escriviu una funció que imprimeixi un per un tots els caràcters d’una cadena de text que gastem com a argument, sense utilitzar índexs.
Truqueu a la funció dues vegades amb dues cadenes de text diferents.
Pista
def deletrea(texto): for c in ... : print( ... ) deletrea('Hola, mundo') deletrea( ... )
Escriviu una funció que imprimeixi un per un tots els caràcters d’una cadena de text que gastem com a argument, mitjançant índexs.
Truqueu a la funció dues vegades amb dues cadenes de text diferents.
Pista
def deletrea(texto): for i in range(len(texto)): print( ... ) deletrea('Hola, mundo') deletrea('En un lugar de la mancha')
Escriviu una funció que accepti una cadena de text com a argument i que la cadena està empresonant gradualment al principi només un personatge, després dos caràcters, de manera que fins que no s’imprimeixin tots els caràcters.
Exemple
>>> letrero('En un lugar de la Mancha') E En En En u En un En un En un l En un lu ... ...
Modifica la funció anterior de manera que imprimeix la cadena de text a partir de la dreta, caràcter per caràcter, fins que finalitzi
>>> letrero_inverso('En un lugar de la Mancha') a ha cha ncha ancha Mancha Mancha a Mancha la Mancha ... ...
Escriviu una funció que accepti com a argument una cadena de text i que imprimeix grups de cinc caràcters del text des del començament de la cadena fins al final
>>> letrero_corto('En un lugar de la Mancha') E En En En u En un n un un l un lu n lug luga lugar ugar gar d ar de r de de l de la ... ... ancha ncha cha ha a
Pista: afegiu espais al començament i al final de la cadena de text.