Una cadena ja és un tipus complet
A C una cadena era un vector de char amb un '\0' al final, i calia una funció per a cada operació. En Python, str ja porta tot això incorporat.
Llargada i concatenació
nom = "Jordi"
salutacio = "Hola, "
print(f"Llargada: {len(nom)}")
salutacio = salutacio + nom
print(f"{salutacio}!")
len() substitueix strlen(), i + substitueix strcat() — sense preocupar-te mai de si hi ha prou espai reservat: Python ho gestiona tot sol.
Mètodes útils de str
| Mètode | Fa |
|---|---|
s.upper() / s.lower() | retorna una còpia en majúscules / minúscules |
s.strip() | treu espais (o salts de línia) del principi i del final |
s.replace(a, b) | retorna una còpia amb totes les a canviades per b |
s.split() | divideix la cadena en una llista de trossos |
s.find(x) | posició de la primera aparició de x (-1 si no hi és) |
s.count(x) | quantes vegades apareix x |
Cap d'aquests mètodes modifica s: les cadenes, igual que les tuples, són immutables en Python — sempre en retornen una de nova.
Comparar cadenes
Exemple
a = "gat"
b = "gos"
if a == b:
print("Són iguals")
elif a < b:
print(f"{a} va abans que {b}")
else:
print(f"{b} va abans que {a}")
Sense cap strcmp(): ==, < i > ja funcionen directament sobre cadenes, comparant-les alfabèticament.
Recórrer una cadena
Sense índexs ni caràcter de final: una cadena ja és una seqüència, i es recorre com qualsevol altra.
Exemple: comptar vocals
paraula = "programar"
comptador = 0
for lletra in paraula:
if lletra in "aeiou":
comptador += 1
print(f"Vocals: {comptador}")
Compara-ho amb la versió de C: allà calia un índex i i comprovar paraula[i] != '\0' a cada volta. Aquí for lletra in paraula: ja dona cada caràcter directament, un per un.
Bonus: aquest comptatge concret també es pot escriure en una sola línia: sum(1 for lletra in paraula if lletra in "aeiou"), o fins i tot sumant paraula.count(v) per a cada vocal v.
Mira la cadena processar-se pas a pas
Al recorregut, fixa't que no fa falta cap índex: cada volta et dona directament el caràcter següent.
Operacions bàsiques
Iteració directa
Codi
Variables
| Nom | Valor |
|---|
Cadena
Terminal
Problemes per resoldre
Sense solució ni comprovació automàtica: escriu el programa, executa'l (python3 programa.py) i prova'l amb els exemples. Les pistes són plegades perquè les obris només si les necessites.
1. Invertir una cadena
Escriu un programa que inverteixi una cadena fixa escrita al codi, sense fer servir la llesca [::-1] (fes-ho amb un bucle, per practicar).
Original: Python Invertida: nohtyP
Pistes
Com que una cadena és immutable, no pots canviar-ne un caràcter en el lloc: construeix-ne una de nova recorrent l'original de darrere cap endavant i anant-hi afegint caràcters (nova = nova + lletra).
A la pràctica, en codi real simplement escriuries paraula[::-1] — una llesca amb pas -1. Un cop t'hagi sortit amb el bucle, prova-la i comprova que dona el mateix resultat.
2. Comptar ocurrències d'una lletra
Demana una paraula i una lletra, i digues quantes vegades apareix aquella lletra a la paraula.
Paraula: anagrama Lletra: a Apareix 4 vegades
Pistes
Fes-ho primer amb un bucle (for c in paraula: if c == lletra: ...), per practicar el recorregut.
Un cop funcioni, compara-ho amb fer-ho directament amb paraula.count(lletra) — la versió idiomàtica en Python.
3. És un palíndrom?
Demana una paraula i digues si és un palíndrom (es llegeix igual del dret que del revés), com "radar".
Paraula: radar És un palíndrom
Pistes
La manera més directa en Python: compara la paraula amb ella mateixa invertida — paraula == paraula[::-1].
Si vols practicar el recorregut manual (com a l'exercici 1), també ho pots fer amb dos índexs que s'acosten des dels extrems, igual que a la versió de C.
Exercicis d'autoavaluació
Aquests es generen amb valors nous a l'atzar i tenen solució comprovable.
Quina serà la sortida per terminal d'aquest programa?